我有一个整数(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
在第二种情况下,值会成功转换,但不会先转换。
答案 0 :(得分:1)
从int到byte时丢失信息。任何输入x都会得到x & 0xFF
。
这个过程是不可逆转的。这就像拿一桶加牛奶,倒入一品脱玻璃杯,然后将品脱玻璃杯倒入一个空的加仑,并想知道为什么加仑不饱。
答案 1 :(得分:0)
对于第一种情况,355是0x01,0x63。一个字节只有8位,因此在类型转换时应忽略0x01,0x63为99,所以你得到99,但永远不会恢复到0x01,0x63,即355。