Java中byte只能保存 -128 到 127之间的数,我的十六进制字串如:5A 4A 01 00 08 AA 78 20 20 CC 33 C3 3C 00
用byte发送的时候 超过127的就会转换成负数。
有解决办法吗

解决方案 »

  1.   

    应该没关系的,你的数据应该是一个byte数组,接收端按照通信协议解析数据就好了
    如果你是想把一个大于127的byte转成一个short或int范围的正数表示,可以自己做下转换

    byte b = (byte)225;
    System.out.println(b);
    int i = 0x00ff & b;
    System.out.println(i);
      

  2.   

    我的十六进制字串是 
    String cmd = "5A 4A 01 00 08 AA 78 20 20 CC 33 C3 3C 00";
    这种格式的
    转byte的时候,每两位是一个byte。 byte出现负数没关系吗?
      

  3.   

    public void cleanBuf(byte[] bits, int len){
    for(int i = 0; i < len; i++){
    bits[i] = 0;
    }
    }
    public String byteToString_Hex(byte[] bit, String str, int len){
    for(int i = 0; i < len; i++){
    str += (Integer.toHexString((bit[i] & 0xF0) >> 4) + Integer.toHexString((bit[i] & 0x0F) >> 0));
    }
    return str.toUpperCase();
    }
    个人认为只是方便协议制定,人的阅读而已, 其实内部都是int类型