使用Java將十六進制轉儲的字符串表示形式轉換為字節數組?我正在尋找一種方法來轉換長字符串(從轉儲),它表示十六進制值到一個字節數組。我不能比在這里發布相同問題的人更好地措辭。但為了保持原創,我會用自己的方式來表達它:假設我有一個"00A0BF"我想要解釋為的字符串byte[] {0x00,0xA0,0xBf}我該怎么辦?我是Java新手,最后使用BigInteger并注意領先的十六進制零。但我覺得它很難看,我確信我錯過了一些簡單的東西。
4 回答

慕少森
TA貢獻2019條經驗 獲得超9個贊
這是一個我認為比目前任何發布的解決方案更好的解決方案:
public static byte[] hexStringToByteArray(String s) { int len = s.length(); byte[] data = new byte[len / 2]; for (int i = 0; i < len; i += 2) { data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + Character.digit(s.charAt(i+1), 16)); } return data;}
這是一個改進的原因:
帶前導零的安全(與BigInteger不同)和負字節值(與Byte.parseByte不同)
不將String轉換為a
char[]
,或為每個字節創建StringBuilder和String對象。沒有可能不可用的庫依賴項
assert
如果不知道參數是否安全,可以隨意添加參數檢查或異常。
添加回答
舉報
0/150
提交
取消