java 无符号byte转换


java中的byte类型是有符号的,值得范围是-128-127

做网络通讯时,接收过来的数据往往都是无符号的byte,值得范围是0-255

因此直接转换时,存储到java显示的值就会有问题

int ori=200;
System.out.println("原始byte值:"+ori);
Byte b=(byte)ori;
System.out.println("java中byte值:"+b);
Integer i=b.intValue();
System.out.println("转换后的int值:"+i); 
System.out.println("存储的2进制值:"+Integer.toBinaryString(i));
Integer i_trans=i&0xFF;
System.out.println("&0xFF后的:"+i_trans);

输出如下:

原始byte值:200
java中byte值:-56
转换后的int值:-56
存储的2进制值:11111111111111111111111111001000
200

例如接收到一个无符号的byte,值200,转到java中的byte,转换后就是-56,因此显示就不正确,需要将服务号的转成有符号的

计算方法就是与0xFF做一个&运算,也就是与11111111做一个&计算即可


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM