in src/main/java/com/aliyun/dts/subscribe/clients/common/BytesUtil.java [331:363]
public static ByteBuffer hexStringToByteBuffer(String hexString) {
char[] chars = hexString.toCharArray();
byte byteData = 0;
ByteBuffer byteBuffer = ByteBuffer.allocate((chars.length + 1) >> 1);
for (int i = 0; i < chars.length; i++) {
if (chars[i] < 'A') {
// chars[i] is a number
byteData |= (chars[i] - '0') & 0x0F;
} else if (chars[i] < 'a') {
// chars[i] is a upper alphabet
byteData |= (10 + (chars[i] - 'A')) & 0x0F;
} else {
// chars[i] is a lower alphabet
byteData |= (10 + (chars[i] - 'a')) & 0x0F;
}
if (0 != (i & 0x01)) {
// compose a whole byte
byteBuffer.put(byteData);
byteData = 0;
} else {
byteData = (byte) (byteData << (byte) 4);
}
}
if (0 != (chars.length & 0x01)) {
byteBuffer.put(byteData);
}
return byteBuffer;
}