String s = "FF";
  byte b = (byte)0xFF;
这两个是有区别的,一个是字符串,一个是字节,字符串s占用的是两个字节,而字节b占用的是一个字节。Integer.toHexString()获取的就是字符串

解决方案 »

  1.   

    还是有些迷糊,比如有16进制报文如下:
     "007C3031323345......"
     正常来讲的话,这是一个字符串,长度是多少就是多少,但是读的时候要2个字节读作一个字节,我知道该这么处理,但是就是不理解。
     007C是16进制下的报文长度,后面跟的是0123F,但是既然是16进制字符串,那007C就是占4个字节吧?为什么要看成2个字节?
     
      

  2.   


    两个16进制数表示一个字节,一个字节的范围是0~255,而一个16进制数字的范围是0~15,所以需要两个16进制才能完整表示一个字节。
    另外007C怎么会是4个字节,都跟你说了这是16进制数,是数!!!数!!!比如说10进制int型整数123456,难道占用6个字节?
      

  3.   


    两个16进制数表示一个字节,一个字节的范围是0~255,而一个16进制数字的范围是0~15,所以需要两个16进制才能完整表示一个字节。
    另外007C怎么会是4个字节,都跟你说了这是16进制数,是数!!!数!!!比如说10进制int型整数123456,难道占用6个字节?
    但是这个16进制报文正常打印长度的话,比如30就是2个字节长度啊,是不是说不能把他当成字符串了?要转化回10进制后的字符串才算了?
      

  4.   


    两个16进制数表示一个字节,一个字节的范围是0~255,而一个16进制数字的范围是0~15,所以需要两个16进制才能完整表示一个字节。
    另外007C怎么会是4个字节,都跟你说了这是16进制数,是数!!!数!!!比如说10进制int型整数123456,难道占用6个字节?
    但是这个16进制报文正常打印长度的话,比如30就是2个字节长度啊,是不是说不能把他当成字符串了?要转化回10进制后的字符串才算了?
    那是字符串长度,用字符串表示只是方便处理,比如一个整数123456占用4个字节,写成字符串“123456”当然长度是6,但并不代表这个数是6个字节
      

  5.   


    两个16进制数表示一个字节,一个字节的范围是0~255,而一个16进制数字的范围是0~15,所以需要两个16进制才能完整表示一个字节。
    另外007C怎么会是4个字节,都跟你说了这是16进制数,是数!!!数!!!比如说10进制int型整数123456,难道占用6个字节?
    但是这个16进制报文正常打印长度的话,比如30就是2个字节长度啊,是不是说不能把他当成字符串了?要转化回10进制后的字符串才算了?
    那是字符串长度,用字符串表示只是方便处理,比如一个整数123456占用4个字节,写成字符串“123456”当然长度是6,但并不代表这个数是6个字节
    哦,那通常报文中的长度,指的不是字符串的长度吗?就是弄得报文这一块,长度这里就晕了。