在 Java 開發中,十進制與十六進制的互轉是處理顏色值、記憶體位址、網路協定、加密演算法等場景的基礎技能。Java 標準庫提供了極簡潔的 API 完成此類轉換,無需手寫演算法。
使用 Integer.toHexString(int) 靜態方法,回傳不帶前綴的小寫十六進制字串。
// 200 -> "c8"
String hex = Integer.toHexString(200);
System.out.println(hex); // 輸出: c8
注意: 回傳值為小寫,若需大寫可配合 .toUpperCase();負數會輸出 32 位元補碼形式(如 -1 -> "ffffffff")。
使用 Integer.parseInt(String, 16) 解析十六進制字串(不含 "0x" 前綴)。
// "8C" -> 140
int decimal = Integer.parseInt("8C", 16);
System.out.println(decimal); // 輸出: 140
關鍵點: 輸入字串不區分大小寫;若字串包含非十六進制字元會拋出 NumberFormatException。
實務上常需處理 long 或位元組陣列,可擴展工具方法:
// long -> 十六進制字串
String longHex = Long.toHexString(1234567890123L);
// 十六進制字串 -> long
long value = Long.parseUnsignedLong("123ABC", 16);
// 位元組陣列 -> 十六進制字串 (常用於日誌/除錯)
public static String bytesToHex(byte[] bytes) {
StringBuilder sb = new StringBuilder(bytes.length * 2);
for (byte b : bytes) {
sb.append(String.format("%02x", b));
}
return sb.toString();
}
Integer.parseInt 僅支援 32 位元,大數值請用 Long.parseLong 或 BigInteger。熟練掌握 Integer.toHexString 與 Integer.parseInt(str, 16) 這對核心 API,配合上述進階技巧,即可輕鬆應對 Java 開發中 90% 以上的進制轉換需求。