java 无符号byte转换

Posted 夜飞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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做一个&计算即可

以上是关于java 无符号byte转换的主要内容,如果未能解决你的问题,请参考以下文章

java如何将十六进制0xFF5100A5转换为无符号int值,貌似java不支持无符号数据?

byte[] 到无符号 BigInteger?

无符号1byte转int

byte怎么转换为char

java 详细介绍short,byte,char三种类型,我分不清

java语言中,128位的文件hash值用啥数据类型存储比较好?要求定长。