最近有点犯晕,一个白痴问题转不过来,望大家指点。有一段内存码:
0000: 8C80 9830 3132 3334 3536 3738 3900 8D90
现在要把它通过网络发出去,那肯定要转换成byte[]了,如何转换?不是直接byte b = (byte)0x8C吧?我记得byte的值是-128~127

解决方案 »

  1.   

    有点明白了,每一位就是一个byte
      

  2.   

    byte b = (byte)0x8C可以这样的,没问题
      

  3.   

    8C80 9830 3132 3334 3536 3738 3900 8D90
    这内存值是16进制的
    你这中间要有空格的话自己处理下哈        //16进制字符串转字节数组
    public byte[] hexStringToByte(String hex) {
    int len = (hex.length() / 2);
    byte[] result = new byte[len];
    char[] achar = hex.toCharArray();
    for (int i = 0; i < len; i++) {
    int pos = i * 2;
    result[i] = (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1]));
    }
    return result;
    }

    //字符转字节
    private byte toByte(char c) {
    byte b = (byte) "0123456789ABCDEF".indexOf(c);
    return b;
    }
      

  4.   

    谢谢ls各位兄台。3楼的兄弟,我不是要字符串转换。我的意思是如何将0x8C转换为byte。我开始想的也是直接(byte),但有个问题,比如:
    int i = 0x8C;   //十进制应该是140
    byte b = (byte)i;    //也就是-116
    i = b;
    我知道这是由于byte是范围是-128~127的缘故,所以b的值为-116,但这样会不会有问题?因为i = b后,i的值就会是-116了。