调用Integer.toHexString(byte[i])逐个转的话:
1)对于负数,会转成ffffff8a这样多出很多f来的。
2)对于前面有0的,被丢弃了,例如转成了a。有没有其他方式保证转出来的都是两位字符的?(除了让我截取字符串之外的!)

解决方案 »

  1.   

    byte[i]怎么会有负数的?
    不知道你究竟想干什么,请描述清楚。
      

  2.   

    byte用int表示的话就是-128 ~~ 127啊
      

  3.   

    确切地说就是想把btype的二进制8bit转换为16进制,然后用16进制字符表示出来。
      

  4.   

    StringBuffer b = new StringBuffer();for(int i = 0; i < 6; ++i)
    {
    int x = (int)segs[i] & 0xff;
    if(x < 16)
    b.append('0');
    b.append(Integer.toString(x,16).toUpperCase());

    if(i < segs.length-1)
    b.append(MACADDRESS_SEPARATOR);
    }有点复杂, 但有效
      

  5.   


    Integer.toHexString(byte[i] >= 0 ? byte[i] : 256+byte[i]);