java byte&0xFF

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java byte&0xFF相关的知识,希望对你有一定的参考价值。

做串口端口通讯时,数据都是以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

 

以上是关于java byte&0xFF的主要内容,如果未能解决你的问题,请参考以下文章

java中byte转换int时为何与0xff进行与运算

Java中byte数组转换int时为何与0xff进行与运算

Integer.toHexString(byte & 0xFF)

Java 无符号数的处理

byte为什么要与上0xff?

byte为什么要与上0xff?