如何在java中将字节重新解释为整数?

时间:2016-10-02 17:27:34

标签: java

我遇到了不同类型转换的问题。 在我的代码中,我尝试使用字节,然后将它们转换为整数,以便能够将x的位数从整数写入一种存储。

问题在于,当我将负数作为字节并将其转换为整数时,作为整数的位表示将所有前导位设置为1。 因此,当我尝试从整数中保存例如10位时,我得到前导位为1而不是0,正如我预期的那样。

有没有办法将字节重新解释为整数,同时保持位表示相同?我不需要关心整数的实际数值。

从C ++开始,我习惯使用无符号值来防止这个问题,但是现在我对如何处理这个问题感到茫然,因为java只限于有符号整数。

示例:

/*
    decimal: -28
    as byte: 11100100
    as integer: 11111111111111111111111111100100
    needed/expected integer: 00000000000000000000000011100100
*/
import java.util.*;
import java.lang.*;
import java.io.*;

class MyClass
{
    public static void main (String[] args) throws java.lang.Exception
    {
        System.out.println(Integer.toBinaryString((byte)-28));
    }
}

https://ideone.com/VE960u

1 个答案:

答案 0 :(得分:2)

yourInt = yourByte & 255;

只需屏蔽不需要的位。