private static String byteHEX(byte ib) { char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; char[] ob = new char[2]; ob[0] = Digit[(ib >> 4) & 0X0F]; ob[1] = Digit[ib & 0X0F]; String s = new String(ob); return s; } |
解释如下:
char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A',
'B', 'C', 'D', 'E', 'F' };
//定义16进制的char数组
char[] ob = new char[2];
//因为byte为8位0,1的数字,所以表示为16进制应该是2位char
ob[0] = Digit[(ib >> 4) & 0X0F];
(ib >> 4) & 0x0f:二进制数ib右移4位,这样把高四位放到低四位,然后再与0f做与操作把移位后的高四位清0,得到移位后的低四位,再转换成十进制数,Digit [(b >> 4) & 0x0f]就是取出数组下标数字对应的字符,Digit [b & 0x0f]同理;
举例:
例如:ib=10010011;(ib >> 4) & 0x0f操作后,b=00001001=9,Digit [(b >> 4) & 0x0f]=’9‘;b & 0x0f=00000011=3,Digit [b & 0x0f]=’3‘;因此b对应的十六进制数是93H。转化成string就是“93”