做串口端口通讯时,数据都是以byte类型发送的
普通的byte范围是-128-127,而java的byte范围是0-255
因此将数据的byte转成java的byte时,需要与0xff(11111111)做一个&运算,将-128-127转换到java的0-255之间
也就是与 0xff 做 & 运算会将数据 byte 值变成 java的byte 类型的值,也将 -128~0 间的负值都转成正值了。
System.out.println("1的编码:"+Integer.toBinaryString(1)); //java中的负数是取补码+1 System.out.println("-1的编码:"+(Integer.toBinaryString(-1))); System.out.println("0XFF的编码:"+Integer.toBinaryString(Integer.valueOf("FF",16))); System.out.print("-1 & 0xFF:"); System.out.println(-1 & 0xFF); System.out.print("1 & 0xFF:"); System.out.println(1 & 0xFF);
打印输出
1的编码:1
-1的编码:11111111111111111111111111111111
0XFF的编码:11111111
-1 & 0xFF:255
1 & 0xFF:1