Int到Byte具有相同的值

1 java int byte

我有和int和一个字节,我需要字节值与int相同的值,我发现的所有答案最终都是这样的:

int i = 234;
byte b = (byte) i;
System.out.println(b); // -22
int i2 = b & 0xFF;
System.out.println(i2); // 234
Run Code Online (Sandbox Code Playgroud)

现在,如果我的int等于234,我打印出来时需要我的字节值234,而不是-22,我理解为什么它打印出-22但不是我需要的.

如果有人知道如何做到这一点,请帮助我.

man*_*uti 5

你不能.byte只能在-128和之间存储数字127.转换不可表示的整数时,必然会发生信息丢失.

详细说来,当转换为intto时byte,仅考虑最低的8位.234在这8位中可以表示,但结果是负数(-22),因为MSB是1.在您的代码中,当您这样做时

int i2 = b & 0xFF;
Run Code Online (Sandbox Code Playgroud)

它将数字返回到32位整数,除了最低的8设置为零之外的所有位.因此,结果是相同的数字234.