二行制转hex字符串的方法如下:
二行制转hex字符串的方法如下: private static String byte2hex(byte[] b){ String hs=""; String stmp=""; for (int n=0; n<b.length; n++){ stmp=(java.lang.Integer.toHexString(b[n] & 0xFF)); if (stmp.length()==1) hs=hs+"0"+stmp; else hs=hs+stmp; } return hs; }
Java中的一个byte,其范围是-128~127的,而Integer.toHexString的参数本来是int,如果不进行&0xff,那么当一个byte会转换成int时,对于负数,会做位扩展,举例来说,一个byte的-1(即0xff),会被转换成int的-1(即0xffffffff),那么转化出的结果就不是我们想要的了。
而0xff默认是整形,所以,一个byte跟0xff相与会先将那个byte转化成整形运算,这样,结果中的高的24个比特就总会被清0,于是结果总是我们想要的。