类型转换为int到byte,反之亦然

时间:2013-09-17 06:29:47

标签: casting integer byte

我有一个整数(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

在第二种情况下,值会成功转换,但不会先转换。

2 个答案:

答案 0 :(得分:1)

从int到byte时丢失信息。任何输入x都会得到x & 0xFF

这个过程是不可逆转的。这就像拿一桶加牛奶,倒入一品脱玻璃杯,然后将品脱玻璃杯倒入一个空的加仑,并想知道为什么加仑不饱。

答案 1 :(得分:0)

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