问题:
byte为有符号字节,表示-128~127之间的数。
java用byte接收到的串口数据,要将之转为相应的无符号数。
解决思路:
data & 0xff
0xff是int,占4个字节,a是byte,占1个字节,进行&操作的细节如下:
00000000 00000000 00000000 11101010 (data)
&
11111111 11111111 11111111 11111111 (0xff)
---------------------------------------------------------------------
= 00000000 00000000 00000000 11101010即保留了data所占的后八位,但int为32位,其最高位为0,表示正数。则把byte转为了相对应的无符号int。
解决方案:
public static Integer byteToUnsignedInt(byte data) {
return data & 0xff;
}