码迷,mamicode.com
首页 > 编程语言 > 详细

java 无符号byte转换

时间:2016-12-05 17:20:22      阅读:393      评论:0      收藏:0      [点我收藏+]

标签:范围   val   无符号   binary   str   网络通讯   计算   需要   网络   

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转换

标签:范围   val   无符号   binary   str   网络通讯   计算   需要   网络   

原文地址:http://www.cnblogs.com/king1302217/p/6134370.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!