是的,
0xff就是
11111111。但这试图显示无符号字节值,即使在Java中
byte已签名。该值
0xff是
-1已签署
byte,但它是
255一个
short。
当
byte价值
0xff被读取,打印值将产生
-1。所以它分配给
short具有更大的范围,并且可以存储
byte值通常会溢出是一个负数作为
byte为正整数,例如144作为
byte是
0x90,或-112,但它可以被适当地存储为
144作为
short。
因此,将的
byte值
-1分配给
short。但是,那是什么呢?进行原始的加宽转换,并对负值进行符号扩展。因此
11111111变得
11111111 11111111仍
-1,但这次作为
short。
然后使用位掩码
0xff(
00000000 11111111)再次取出最后8位:
-1: 11111111 11111110xFF: 00000000 1111111====================== 255: 00000000 1111111
这是获取无符号
byte值的一种方法,方法是将其转换为
short,然后从中屏蔽掉原始位
byte,以将其显示为无符号值。



