二进制字节码转换出现负数

byte数组在转换成数值类型的时候出现负数?

问题原因:
byte是一个符号保存的,第一位是符号位。1000 0000代表的数就是-1,所以正数最大为127,负数最小为-128.而二进制流中的数据是无符号的8位二进制,转成byte的时候被当成有符号的二进制来转换,所以需要与上0xff,0xff默认被当成int类型的32位无符号整数,与上原来的数高位取0变成8位无符号数。
1000 0000变成int后
-1 :1111 1111 1111 1111 1111 1111 1000 0000
Oxff:0000 0000 0000 0000 0000 0000 1111 1111
做与运算后:0000 0000 0000 0000 0000 1000 0000

你可能感兴趣的:(java)