-1

我有一个整数(val)355,我使用类型转换将它转换为字节(b)并得到 99

int val = 355;
byte b = (byte) val; //b contains 99

现在我无法再次将这个 99 转换为 355,我尝试的内容如下所示

int returnVal = (int) b; //returnVal contains 99
int converted = returnVal & 0xFF; //converted contains 99

如何将 99 转换为 355?

在第二种情况下,值不同。现在,

int val = 161;
byte b = (byte) val; //b contains -95
int returnVal = (int) b; //returnVal contains -95
int converted = returnVal & 0xFF; //converted contains 161

在第二种情况下,值已成功转换,但不是第一次。

4

2 回答 2

1

当您从 int 转到 byte 时,您会丢失信息。你得到x & 0xFF任何输入 x。

而且这个过程是不可逆的。这就像拿一加仑牛奶倒入一品脱玻璃杯中,然后将品脱玻璃杯倒入一加仑空牛奶中,然后想知道为什么一加仑没有装满。

于 2013-09-17T06:34:19.347 回答
0

对于第一种情况,355 是 0x01、0x63。一个字节只有 8 位,所以在类型转换时应该忽略 0x01,0x63 是 99,所以你得到了 99,但永远不会恢复为 0x01,0x63,即 355。

于 2013-09-17T06:52:47.233 回答