我遇到了不同类型转换的问题。 在我的代码中,我尝试使用字节,然后将它们转换为整数,以便能够将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));
}
}
答案 0 :(得分:2)
yourInt = yourByte & 255;
只需屏蔽不需要的位。