package com.vci.starter.web.util.Lcm;
|
|
/**
|
* 数据类型转换工具类
|
*
|
* @author Chill
|
*/
|
public class DatatypeConverterUtil {
|
|
/**
|
* hex文本转换为二进制
|
*
|
* @param hexStr hex文本
|
* @return byte[]
|
*/
|
public static byte[] parseHexBinary(String hexStr) {
|
final int len = hexStr.length();
|
|
if (len % 2 != 0) {
|
throw new IllegalArgumentException("hexBinary needs to be even-length: " + hexStr);
|
}
|
|
byte[] out = new byte[len / 2];
|
|
for (int i = 0; i < len; i += 2) {
|
int h = hexToBin(hexStr.charAt(i));
|
int l = hexToBin(hexStr.charAt(i + 1));
|
if (h == -1 || l == -1) {
|
throw new IllegalArgumentException("contains illegal character for hexBinary: " + hexStr);
|
}
|
|
out[i / 2] = (byte) (h * 16 + l);
|
}
|
|
return out;
|
}
|
|
/**
|
* hex文本转换为int
|
*
|
* @param ch hex文本
|
* @return int
|
*/
|
private static int hexToBin(char ch) {
|
if ('0' <= ch && ch <= '9') {
|
return ch - '0';
|
}
|
if ('A' <= ch && ch <= 'F') {
|
return ch - 'A' + 10;
|
}
|
if ('a' <= ch && ch <= 'f') {
|
return ch - 'a' + 10;
|
}
|
return -1;
|
}
|
|
}
|