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