zoukankan      html  css  js  c++  java
  • 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做一个&计算即可

  • 相关阅读:
    逻辑回归问题(Logistic Regression)
    丑数
    用两个栈实现队列
    重建二叉树
    单变量的线性回归(Linear Regression with One Variable)
    机器学习
    二维数组中的查找
    面经
    亚信实习---->PLSQL链接Oracle
    亚信实习小练习
  • 原文地址:https://www.cnblogs.com/king1302217/p/6134370.html
Copyright © 2011-2022 走看看