我有和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但不是我需要的.
如果有人知道如何做到这一点,请帮助我.
你不能.byte只能在-128和之间存储数字127.转换不可表示的整数时,必然会发生信息丢失.
详细说来,当转换为intto时byte,仅考虑最低的8位.234在这8位中可以表示,但结果是负数(-22),因为MSB是1.在您的代码中,当您这样做时
int i2 = b & 0xFF;
Run Code Online (Sandbox Code Playgroud)
它将数字返回到32位整数,除了最低的8设置为零之外的所有位.因此,结果是相同的数字234.
| 归档时间: |
|
| 查看次数: |
184 次 |
| 最近记录: |