java 无符号Byte运算问题
int a = 255;
byte b = (byte) a; // 结果 b 的值为 -1;
int c = b; // 结果 c 的值为 -1;
int d = Byte.toUnsignedInt(b); // 用该方法可以还原为255
解释:
由于byte是有符号的,而255 的二进制值为 1111 1111 ,第一个符号位为1, 所以结果为-1。如果直接强转,导致转换回的值也仍然是-1.而非255.
这个时候使用 Byte的toUnsignedInt方法可以忽略符号位。还原为255实际值。