在java中一个byte占8bit, byte是有符号的,所以byte的范围是 -128~~~127。
把byte转化成hex得string.如下:
String result =
String str = Integer.toHexString(temp);
str =
}
result += str;
}
在java中位运算,先把byte扩展成int, 在把byte转成int过程中,会在int高位补上符号位。
所以如果是负数byte那么转成的int后,后补的24位都是1。
比如 -10得原码: 1000 1010 他的补码为: 1111 0110 如果扩展成int型,则为
1111 1111 1111 1111.......... 1111 0110 此时用Integer.toHexString 输出结果为 fffffff6
而期望结果应该是 F6,为了让结果是F6,那么要把byte扩展后的符号位清除掉,也就是用
&ff 来实现。
"0x" ; for (int i=0; i<bytes.length; i++) {int temp = bytes[i] & 0xff;if (str.length() != 2) {"0" + str; bytes[i] & 0xff 得用处是清楚符号位。