วิธีใช้งาน
- เลือก “เข้ารหัส” เพื่อแปลงข้อความเป็น Base36 หรือ “ถอดรหัส” เพื่อแปลง Base36 กลับเป็นข้อความ
- พิมพ์หรือวางอินพุต หรือเปิดไฟล์ขนาดเล็ก (ไม่เกินประมาณ 20 KB)
- เปิด “ตัวพิมพ์ใหญ่” หากต้องการตัวอักษรพิมพ์ใหญ่ในเอาต์พุต
- คัดลอกผลลัพธ์หรือดาวน์โหลดเป็นไฟล์
Base36 คืออะไร
Base36 เขียนข้อมูลด้วยตัวเลขสิบตัวและตัวอักษรละติน 26 ตัว คือ 0-9 ตามด้วย a-z นี่คือชุดตัวอักษรที่ใหญ่ที่สุดที่สร้างได้จากตัวเลขและตัวอักษรโดยไม่สนใจตัวพิมพ์ สตริง Base36 จึงใช้ได้กับระบบที่เปลี่ยนหรือไม่สนใจตัวพิมพ์ อักขระแต่ละตัวเก็บข้อมูลประมาณ 5.17 บิต เอาต์พุตจึงมีขนาดประมาณ 1.55 เท่าของอินพุต สั้นกว่า Base32 เล็กน้อย
เนื่องจาก 36 ไม่ใช่กำลังของสอง จึงตัดไบต์เป็นกลุ่มบิตตรง ๆ ไม่ได้ เครื่องมือนี้จึงอ่านอินพุตทั้งหมดเป็นจำนวนเต็มไม่มีเครื่องหมายขนาดใหญ่หนึ่งจำนวน แล้วแปลงเป็นเลขฐาน 36 ซึ่งเป็นวิธีเดียวกับที่ Base58 ใช้ ตัวเลขจะสูญเสียไบต์ศูนย์ที่นำหน้า แต่ละไบต์ดังกล่าวจึงเขียนเป็น 0 นำหน้าและกู้คืนเมื่อถอดรหัส การคำนวณนี้จะช้าลงเมื่ออินพุตมีขนาดใหญ่ เครื่องมือจึงรับได้ไม่เกินประมาณ 20 KB
Base36 ใช้ที่ไหนบ้าง
- ID แบบสั้น บริการย่อ URL หมายเลขคำสั่งซื้อ และรหัสตั๋วมักแสดง ID ตัวเลขจากฐานข้อมูลเป็นเลขฐาน 36 ตัวอย่างเช่น Reddit ใช้เลขฐาน 36 สำหรับ ID ของโพสต์และความคิดเห็น
- ที่ที่ไม่แยกตัวพิมพ์ ชื่อ DNS และระบบไฟล์บางระบบไม่สนใจตัวพิมพ์ ด้วยเหตุนี้ IPFS จึงใช้ตัวระบุบางชนิดในรูป Base36 ในที่อยู่ของ subdomain gateway
- ตัวเลขในโค้ด เลขฐาน 36 เป็นฐานสูงสุดที่ภาษาโปรแกรมส่วนใหญ่รองรับในตัวสำหรับการแปลงจำนวนเต็ม
หากระบบคงตัวพิมพ์ไว้และคุณต้องการสตริงตัวอักษรและตัวเลขที่สั้นที่สุด Base62 จะกะทัดรัดกว่า
ตัวเลข Base36 ในโค้ด
หน้านี้เข้ารหัสไบต์ หากต้องการแปลงจำนวนเต็ม ให้ใช้ฟังก์ชันในตัวของภาษาที่คุณใช้ หรือ ตัวแปลงเลขฐาน
// JavaScript
(1000000).toString(36) // 'lfls'
parseInt('lfls', 36) // 1000000
123456789012345678901234567890n.toString(36) // ใช้ BigInt สำหรับค่าขนาดใหญ่
# Python
int('lfls', 36) # 1000000
# ไม่มีฟังก์ชันในตัวสำหรับการแปลงย้อนกลับ
parseInt สูญเสียความแม่นยำเมื่อค่าเกิน Number.MAX_SAFE_INTEGER สำหรับค่าที่ใหญ่กว่านั้น ให้สะสมหลักแต่ละหลักเป็น BigInt ด้วยตนเอง
ข้อกำหนด
| ชุดตัวอักษร | 0-9 a-z |
|---|---|
| ขนาดเอาต์พุต | ประมาณ 155% (แปลงแบบเลขจำนวนใหญ่) |
| แพดดิง | ไม่มี |
| มาตรฐาน | ไม่มีมาตรฐานอย่างเป็นทางการ |
| แยกตัวพิมพ์เล็ก-ใหญ่ | ไม่ใช่ |
ตัวอย่าง
| อินพุต (UTF-8) | เอาต์พุต |
|---|---|
Hello, World! | fg3h7vqw7een6jwwnzmp |
Base64.is | 76f8bz4veeatf7 |
你好 | 2h5exfqm65 |
คำถามที่พบบ่อย
Base36 แยกตัวพิมพ์เล็ก-ใหญ่หรือไม่
ไม่แยก เอาต์พุตเป็นตัวพิมพ์เล็กโดยค่าเริ่มต้น และตัวเลือก “ตัวพิมพ์ใหญ่” จะเปลี่ยนเป็นตัวพิมพ์ใหญ่ ตัวถอดรหัสรับได้ทั้งสองแบบ
ทำไมเครื่องมืออื่นจึงให้ผลลัพธ์ Base36 ต่างออกไป
Base36 ไม่มีมาตรฐานอย่างเป็นทางการ บางเครื่องมือเข้ารหัสตัวเลข บางเครื่องมือเข้ารหัสไบต์ และแต่ละเครื่องมือจัดการไบต์ศูนย์ที่นำหน้าต่างกัน เครื่องมือนี้เข้ารหัสไบต์ของอินพุตเป็นตัวเลขขนาดใหญ่หนึ่งจำนวน และเขียนไบต์ศูนย์ที่นำหน้าแต่ละไบต์เป็น 0