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实际值。

 

posted @ 2022-08-22 15:01  蜜铀  阅读(204)  评论(0编辑  收藏  举报