ตัวแปลงเลขฐานสองทิศทาง: Decimal, Hex, Base32, Base64
แปลงตัวเลขระหว่างฐานสิบ (decimal) กับ Base16 (hex), Base32 และ Base64 ได้ทั้งสองทิศทาง พร้อมตรวจจับฐานอัตโนมัติ เข้ารหัสเลขฐานสิบหรือถอดรหัสค่าที่เข้ารหัสไว้
เครื่องมือแปลงฐานสองทิศทาง
แปลงระหว่างตัวเลขฐานสิบและการเข้ารหัสฐานมาตรฐาน (Base16/เลขฐานสิบหก, Base32, Base64) ป้อนค่าในช่องใดก็ได้เพื่อแปลง
ป้อนจำนวนเต็มบวก (สูงสุด: 9,007,199,254,740,991)
ป้อนค่าที่เข้ารหัสด้วย Base16, Base32 หรือ Base64
เกี่ยวกับการเข้ารหัสฐาน
เอกสารประกอบการใช้งาน
Bidirectional Base Converter: Decimal ↔ Base16, Base32, Base64
ตัวแปลงเลขฐาน (base converter) จะเปลี่ยนตัวเลขจากรูปแบบการเขียนหนึ่งไปเป็นอีกรูปแบบหนึ่ง คอมพิวเตอร์ URL และรูปแบบข้อมูลต่าง ๆ มักไม่เก็บตัวเลขฐานสิบ (decimal) แบบธรรมดา แต่จะบีบอัดให้อยู่ในรูปแบบการเข้ารหัส ที่กะทัดรัดหรือปลอดภัยสำหรับการส่งข้อมูลมากขึ้น เช่น Base16 (Hexadecimal), Base32 หรือ Base64 เครื่องมือนี้แปลงได้ ทั้งสองทิศทาง: พิมพ์ตัวเลขฐานสิบเพื่อดูรูปแบบ Base16/Base32/Base64 หรือวางค่าที่เข้ารหัส ไว้แล้วเพื่อแปลงกลับเป็นเลขฐานสิบ นอกจากนี้ยังตรวจจับได้ว่าค่าที่เข้ารหัสนั้นเป็นฐานใด
ความหมายของคำว่า "ฐาน" (base)
ระบบเลขแบบตำแหน่ง (positional number system) ทุกระบบมี ฐาน (หรือ radix) ซึ่งคือจำนวนสัญลักษณ์ที่แตกต่าง กันซึ่งใช้แทนหลักตัวเลขหนึ่งหลัก เลขฐานสิบคือฐาน-10 (0–9) การเข้ารหัสในที่นี้ใช้ชุดสัญลักษณ์ที่ใหญ่ขึ้นเพื่อ แลกกับสตริงที่สั้นลง:
- Base16 (Hexadecimal) — สัญลักษณ์
0-9และA-Fแต่ละอักขระแทน 4 บิต ใช้กันอย่างแพร่หลายสำหรับ รหัสสี (#FF0000) ที่อยู่หน่วยความจำ และค่าแฮช - Base32 — สัญลักษณ์
A-Zและ2-7(RFC 4648) แต่ละอักขระแทน 5 บิต ไม่สนใจตัวพิมพ์เล็ก-ใหญ่ และ ไม่มีอักขระที่สับสนกันง่าย จึงเหมาะกับการอ่านออกเสียงหรือพิมพ์ด้วยมือ - Base64 — สัญลักษณ์
A-Z,a-z,0-9,+และ/(RFC 4648) แต่ละอักขระแทน 6 บิต เป็นวิธีมาตรฐาน ในการส่งข้อมูลไบนารีผ่านช่องทางที่รองรับเฉพาะข้อความ เช่น อีเมลหรือฟิลด์ JSON
ฐานยิ่งสูง จำนวนอักขระที่ใช้แทนตัวเลขเดียวกันก็ยิ่งน้อยลง แต่ชุดสัญลักษณ์ที่ต้องจดจำก็ยิ่งใหญ่ขึ้นตามไปด้วย
วิธีใช้งานตัวแปลง
เครื่องมือนี้มีสองช่องกรอกข้อมูล และจะทำงานตามช่องที่คุณพิมพ์:
- Decimal → encoded ป้อนจำนวนเต็มบวกในช่องเลขฐานสิบ เครื่องมือจะแสดงค่าดังกล่าวในรูปแบบ Base16, Base32 และ Base64 พร้อมกัน
- Encoded → decimal วางค่า Base16, Base32 หรือ Base64 ลงในช่องค่าที่เข้ารหัส เครื่องมือจะตรวจจับฐาน ตรวจสอบความถูกต้องของอักขระ และคืนค่าเป็นเลขฐานสิบ
ช่วงค่าและการตรวจสอบความถูกต้อง
ค่าต่าง ๆ ถูกจำกัดไว้ที่จำนวนเต็มปลอดภัยสูงสุด (maximum safe integer) ของ JavaScript คือ 9007199254740991 (นั่นคือ 2^53 − 1) เกินกว่านี้ จำนวนเต็มจะไม่สามารถแทนค่าได้อย่างแม่นยำอีกต่อไป ดังนั้นตัวแปลงที่ยังคำนวณต่อไป จะคืนค่าตัวเลขที่ผิดพลาดโดยไม่แจ้งเตือน เครื่องมือนี้จึงแจ้งข้อผิดพลาดว่าค่าอยู่นอกช่วงแทนการเดาค่า ค่าเลขฐาน สิบที่ป้อนต้องเป็นจำนวนเต็มที่ไม่ติดลบ ส่วนค่าที่เข้ารหัสต้องใช้เฉพาะอักขระที่ถูกต้องสำหรับฐานนั้น มิฉะนั้น เครื่องมือจะแจ้งเตือนแทนที่จะถอดรหัสออกมาเป็นค่าที่ไม่มีความหมาย
ตัวอย่างการคำนวณ
- 255 ในเลขฐานสิบ Base16 =
FFเนื่องจาก 255 = 15×16 + 15 และทั้งสองหลักเป็นFนี่คือเหตุผลที่#FFFFFFคือสีขาว: ทั้งสามไบต์อยู่ที่ค่าสูงสุด - 1000 ในเลขฐานสิบ Base16 =
3E8(3×256 + 14×16 + 8 = 1000) - การถอดรหัส
FFตรวจพบว่าเป็น Base16 ถอดรหัสได้เท่ากับ 255 - ไบต์ที่มีค่าสูงสุด 8 บิต คือ
FFในเลขฐานสิบหก — หนึ่งอักขระเลขฐานสิบหกแทน 4 บิต จึงใช้สองอักขระต่อหนึ่ง ไบต์ ไบต์เดียวกันนี้ต้องใช้สตริงที่ยาวกว่าใน Base32 และกลุ่มที่มีการเติมช่องว่างใน Base64 ซึ่งเป็นเหตุผลที่ เลขฐานสิบหกยังคงเป็นตัวเลือกที่อ่านง่ายสำหรับค่าสั้น ๆ เช่น สีหรือที่อยู่
การใช้งานของแต่ละการเข้ารหัส
- Base16 — สีของ CSS/HTML ที่อยู่ MAC และ IPv6 ค่าแฮชและเช็คซัมเชิงการเข้ารหัส การดัมป์ข้อมูลไบนารีเป็น เลขฐานสิบหก
- Base32 — คีย์ลับของ TOTP/2FA ระบบแชร์ไฟล์และระบบที่ใช้ DNS บางระบบ ตัวระบุที่พิมพ์หรืออ่านออกเสียงโดย มนุษย์ซึ่งต้องหลีกเลี่ยงความสับสนของตัวพิมพ์เล็ก-ใหญ่และอักขระ
- Base64 —
data:URI ไฟล์แนบอีเมล (MIME) การฝังรูปภาพหรือใบรับรองไว้ใน JSON หรือ XML โทเคน JWT
เนื่องจากการเข้ารหัสแต่ละแบบเป็นเพียง การแสดงผล ของตัวเลขค่าเดียวกัน การแปลงไปมาระหว่างกันจึงไม่เคยเปลี่ยน ค่าที่แท้จริง มีเพียงจำนวนอักขระที่ใช้เขียนและช่องทางที่สามารถส่งผ่านได้อย่างปลอดภัยเท่านั้นที่เปลี่ยนไป