昨天在和终端对接的时候顺便写了一个16进制字符串与bcd直接转换的一个工具类,容蛋蛋跟大家分享下:
//16进制字符串 TO bcd(返回byte[] or string)
private final static String hexStr = "0123456789ABCDEF";
public static byte[] hexStr2Str(String hexStr) throws Exception{
//ToString()是转化为字符串的方法,Trim()是去两边空格的方法,replace去掉字符串中的空格
//toUpperCase将所有的字符在这个字符串为大写,设置语言环境为美国
hexStr = hexStr.toString().trim().replace(" ", "").toUpperCase(Locale.US);
//把这个字符串转换成一个新的字符数组
char[] hexs = hexStr.toCharArray();
//获取这个字符串的长度除以2,得到一个byte[]
byte[] bytes = new byte[hexStr.length() / 2];
//0
int iTmp = 0x00;;
//
for (int i = 0; i < bytes.length; i++){
iTmp = hexStr.indexOf(hexs[2 * i]) << 4;
iTmp |= hexStr.indexOf(hexs[2 * i + 1]);
bytes[i] = (byte) (iTmp & 0xFF);
}
// return new String(bytes,"gbk");
return bytes;
}