private final static byte[] aData= "0123456789ABCDEF".getBytes();
private final static String hexString = "30313233343536373839414243444546";
1.aData经过Bytes2HexString就会变成hexString,
Bytes2HexString方法中把一个字节拆分为两个字接,比如”0”,在Ascii中对应48,二进制为0011 0000,把高四位赋给一个字节,低4位给一个字节,则为30.”F”,对应Ascii为0100 0110,高4位赋给一个字节,低4位给一个字节,则为46。
2.hexString 经过HexStringToBytes处理之后就会变成aData(debug时看到的是[48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70]),
会把两个字符合为一个字符,比如“30”,char[0]=’3’,char[1]=’0’,char[0]通过方法parse返回3,为0000 0011左移4位,得到0011 0000,然后char[1]过方法parse返回0,即为0000 0000,两个数做“或”运算,即可得到十六进制30,即十进制的48。
还比如”41”,char[0]=’4’,char[1]=’1’,char[0]通过方法parse返回4,为0000 0100左移4位,得到0100 0000,然后char[1]过方法parse返回1,即为0000 0001,两个数做“或”运算,即可得到65,然后强制转换成byte,赋给数组中的一个元素。
3.new String(aData)就打印出0123456789ABCDEF
4.private final static byte[] bcdData = {15,06,25};bcdToAscii把一个byte拆为两个byte,15对应的二进制是 0000 1111,先得到高四位(bcdByte[i] >> 4 & 0xF),赋给一个字节,再把第四位赋给一个字节,其他同样处理。
byte[] tData = ByteUtil.bcdToAscii(bcdData);debug时(debug看到的是十进制的数字)可以看到tData=[48, 70, 48, 54, 49, 57],new String(tData)打印出来“0F0619”.