String → Hexadecimal
ใช้ Integer.toHexString(int) แปลงแต่ละ character (char → int → hex)
ตัวอย่าง
import java.util.Scanner;
public class StringToHex {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter a String: ");
String str = sc.next();
StringBuilder sb = new StringBuilder();
for (char ch : str.toCharArray()) {
sb.append(Integer.toHexString(ch));
}
String hex = sb.toString();
System.out.println("Hex: " + hex);
}
}
ผลลัพธ์
Enter a String: Tutorialspoint
Hex: 5475746f7269616c73706f696e74
Hexadecimal → String
อ่านทีละ 2 ตัวอักษร hex → parseInt(base 16) → cast เป็น char
ตัวอย่าง
import java.util.Scanner;
public class HexToString {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter Hex: ");
String hex = sc.next();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hex.length(); i += 2) {
String hexPair = hex.substring(i, i + 2);
int charCode = Integer.parseInt(hexPair, 16);
sb.append((char) charCode);
}
String result = sb.toString();
System.out.println("String: " + result);
}
}
ผลลัพธ์
Enter Hex: 5475746f7269616c73706f696e74
String: Tutorialspoint
วิธีทันสมัย: ใช้ Java 17+ HexFormat (แนะนำ)
Java 17 เพิ่ม java.util.HexFormat สำหรับแปลง byte[] ↔ hex
import java.util.HexFormat;
public class ModernHexConversion {
public static void main(String[] args) {
String original = "Tutorialspoint";
// String → Hex
byte[] bytes = original.getBytes(StandardCharsets.UTF_8);
String hex = HexFormat.of().formatHex(bytes);
System.out.println("Hex: " + hex); // 5475746f7269616c73706f696e74
// Hex → String
byte[] decoded = HexFormat.of().parseHex(hex);
String decodedStr = new String(decoded, StandardCharsets.UTF_8);
System.out.println("Decoded: " + decodedStr); // Tutorialspoint
}
}
การเปรียบเทียบ
| วิธี | Java Version | รองรับ Unicode | ประสิทธิภาพ | คะแนน |
|---|---|---|---|---|
| Integer.toHexString(char) | 1.0 | ✗ (BMP only) | ปานกลาง | ⭐⭐ |
| HexFormat (Java 17+) | 17 | ✓ (UTF-8 bytes) | ดีที่สุด | ⭐⭐⭐⭐⭐ |
| Apache Commons Codec Hex | External | ✓ | ดี | ⭐⭐⭐⭐ |
ข้อควรระวัง
- วิธีเก่า (
toHexString(char)) ใช้ UTF-16 code unit - ไม่รองรับ supplementary characters (emoji, ภาษาบางภาษา) - HexFormat ใช้ UTF-8 bytes - รองรับทุก Unicode character ได้ถูกต้อง
- Hex string ควรเป็น lowercase ตาม convention (HexFormat.of().withUpperCase() ถ้าต้องการ uppercase)
- ความยาว hex string = 2 × byte length
สรุป
- Java 17+: ใช้
HexFormat.of().formatHex(bytes)และHexFormat.of().parseHex(hex) - Java < 17: ใช้
Integer.toHexString()loop หรือ library (Apache Commons Codec, Guava) - ระบุ charset ชัดเจน (UTF-8) เพื่อความเข้ากันได้