摘要:[Java] 將HexString(16進位) 轉為byte[] (rawdata)
賀!!點部落註冊一年多,現在才首發wwww
當初學COBOL的第一個遇到困難的習題,
就是把1234轉存為X'1234'...
沒想到現在回頭寫Java,還是在這個功能卡住了一下XD
後來還好找到Solution , 趕快來記錄一下..
public static byte[] hexToBytes(string hexString) {
char[] hex = hexString.toCharArray();
//轉rawData長度減半
int length = hex.length / 2;
byte[] rawData = new byte[length];
for (int i = 0; i < length; i++) {
//先將hex資料轉10進位數值
int high = Character.digit(hex[i * 2], 16);
int low = Character.digit(hex[i * 2 + 1], 16);
//將第一個值的二進位值左平移4位,ex: 00001000 => 10000000 (8=>128)
//然後與第二個值的二進位值作聯集ex: 10000000 | 00001100 => 10001100 (137)
int value = (high << 4) | low;
//與FFFFFFFF作補集
if (value > 127)
value -= 256;
//最後轉回byte就OK
rawData [i] = (byte) value;
}
return rawData ;
}