调用Integer.toHexString(byte[i])逐个转的话:
1)对于负数,会转成ffffff8a这样多出很多f来的。
2)对于前面有0的,被丢弃了,例如转成了a。有没有其他方式保证转出来的都是两位字符的?(除了让我截取字符串之外的!)
1)对于负数,会转成ffffff8a这样多出很多f来的。
2)对于前面有0的,被丢弃了,例如转成了a。有没有其他方式保证转出来的都是两位字符的?(除了让我截取字符串之外的!)
不知道你究竟想干什么,请描述清楚。
{
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);
}有点复杂, 但有效
Integer.toHexString(byte[i] >= 0 ? byte[i] : 256+byte[i]);