วิธีใช้งาน
- เลือก “เข้ารหัส” เพื่อแปลงข้อความเป็นเลขฐานสิบหก หรือ “ถอดรหัส” เพื่อแปลงเลขฐานสิบหกกลับเป็นข้อความ
- พิมพ์หรือวางอินพุต หรือเปิดไฟล์เพื่อดูไบต์ของไฟล์ในรูปเลขฐานสิบหก
- ตั้งค่าตัวเลือก ได้แก่ “ตัวพิมพ์ใหญ่” “ตัวคั่น” (ไม่มี ช่องว่าง หรือทวิภาค) และ “ตัวนำหน้า” (ไม่มี 0x หรือ \x)
- คัดลอกผลลัพธ์หรือดาวน์โหลดเป็นไฟล์
เลขฐานสิบหก (Base16) คืออะไร
เลขฐานสิบหกใช้สัญลักษณ์สิบหกตัว ได้แก่ตัวเลข 0 ถึง 9 และตัวอักษร A ถึง F เลขฐานสิบหกหนึ่งหลักเก็บข้อมูลสี่บิต ทุกไบต์จึงเขียนเป็นสองหลักพอดี ตั้งแต่ 00 ถึง FF เอาต์พุตมีขนาดเป็นสองเท่าของอินพุต ซึ่งมากกว่า Base64 หรือ Base32 แต่ยังมองเห็นขอบเขตของแต่ละไบต์ได้ชัดเจน ดีบักเกอร์ โปรแกรมแก้ไขเลขฐานสิบหก (hex editor) และเครื่องมือเครือข่ายจึงแสดงข้อมูลในรูปแบบนี้
RFC 4648 กำหนดมาตรฐานการเข้ารหัสนี้ในชื่อ Base16 โดยใช้ชุดตัวอักษรตัวพิมพ์ใหญ่และไม่มีแพดดิง ในทางปฏิบัติตัวพิมพ์เล็กก็พบได้บ่อยพอกัน และตัวถอดรหัสต่าง ๆ รวมถึงตัวถอดรหัสนี้รับได้ทั้งสองแบบ
เลขฐานสิบหกใช้ที่ไหนบ้าง
- แฮชและคีย์ ไดเจสต์ SHA-256 มีขนาด 32 ไบต์ เขียนเป็นเลขฐานสิบหก 64 หลัก คีย์เข้ารหัสลับ UUID และเช็กซัมก็มักแสดงเป็นเลขฐานสิบหกเช่นกัน
- ที่อยู่ฮาร์ดแวร์ MAC address คือเลขฐานสิบหกขนาดหกไบต์ ซึ่งปกติคั่นด้วยทวิภาค ตัวคั่นแบบ “ทวิภาค” จะสร้างผลลัพธ์ในรูปแบบนั้น
- Escape sequence สตริงในภาษา C, Python และ JavaScript รับ
\xตามด้วยเลขฐานสิบหกสองหลักแทนไบต์หนึ่งไบต์ ซึ่งตรงกับสิ่งที่ตัวเลือกตัวนำหน้า\xเขียนออกมา - รูปแบบบนเว็บ สีใน CSS อย่าง
#FF8800คือสามไบต์ในรูปเลขฐานสิบหก และการเข้ารหัสแบบเปอร์เซ็นต์ใน URL เขียนแต่ละไบต์เป็น%ตามด้วยเลขฐานสิบหกสองหลัก
ถอดรหัสเลขฐานสิบหกเป็นข้อความ
ตัวถอดรหัสยืดหยุ่นเรื่องรูปแบบ โดยรับตัวเลขทั้งตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก ละเว้นช่องว่าง การขึ้นบรรทัดใหม่ จุลภาค ทวิภาค อัฒภาค และขีดกลาง และตัดตัวนำหน้า 0x, \x, % และ &#x ออก คุณจึงวางผลลัพธ์จาก xxd -p, MAC address, UUID, รายการ 0x ที่คั่นด้วยจุลภาค, escape แบบ %XX และ HTML entity แบบเลขฐานสิบหกได้ตามที่เป็นอยู่ แต่ละไบต์ต้องมีสองหลัก หากจำนวนหลักเป็นเลขคี่จะถูกแจ้งเป็นข้อผิดพลาด ไบต์ที่ได้จะแสดงเป็นข้อความตามการเข้ารหัสอักขระที่เลือกไว้
หากต้องการเปลี่ยนเลขฐานสิบหกเป็นการเข้ารหัสอื่นโดยไม่ผ่านข้อความ ให้ใช้ Hex เป็น Base64 หรือ Base64 เป็น Hex
เลขฐานสิบหกในโค้ด
# Python
'Hi'.encode().hex() # '4869'
bytes.fromhex('4869').decode() # 'Hi'
// Node.js
Buffer.from('Hi').toString('hex') // '4869'
Buffer.from('4869', 'hex').toString('utf8') // 'Hi'
# Shell
printf 'Hi' | xxd -p # 4869
ข้อกำหนด
| ชุดตัวอักษร | 0-9 A-F |
|---|---|
| ขนาดเอาต์พุต | 2 อักขระต่อไบต์ (200%) |
| แพดดิง | ไม่มี |
| มาตรฐาน | RFC 4648 หัวข้อ 8 |
| แยกตัวพิมพ์เล็ก-ใหญ่ | ไม่ใช่ |
ตัวอย่าง
| อินพุต (UTF-8) | เอาต์พุต |
|---|---|
Hello, World! | 48656c6c6f2c20576f726c6421 |
Base64.is | 4261736536342e6973 |
你好 | e4bda0e5a5bd |
คำถามที่พบบ่อย
จะแปลงเลขฐานสิบหกเป็นข้อความได้อย่างไร
สลับไปที่ “ถอดรหัส” แล้ววางเลขฐานสิบหก ช่องว่าง ทวิภาค และตัวนำหน้า 0x หรือ \x จะถูกลบออกโดยอัตโนมัติ และไบต์จะแสดงเป็นข้อความ UTF-8 เว้นแต่คุณจะเลือกการเข้ารหัสอักขระอื่น
ควรใช้เลขฐานสิบหกตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก
ทั้งสองแบบแทนไบต์ชุดเดียวกัน RFC 4648 ใช้ตัวพิมพ์ใหญ่ ขณะที่ภาษาโปรแกรมจำนวนมากแสดงผลเป็นตัวพิมพ์เล็ก เปิด “ตัวพิมพ์ใหญ่” หากระบบปลายทางต้องการตัวพิมพ์ใหญ่ ส่วนตัวถอดรหัสรับได้ทั้งสองแบบ