วิธีใช้งาน
- เลือก “เข้ารหัส” เพื่อแปลงข้อความเป็น Base62 หรือเลือก “ถอดรหัส” เพื่อแปลง Base62 กลับเป็นข้อความ
- เลือกลำดับใน “ชุดตัวอักษร” ให้ตรงกับระบบของคุณ: 0-9 A-Z a-z (ค่าเริ่มต้น) หรือ 0-9 a-z A-Z
- พิมพ์หรือวางอินพุต หรือคลิก “เปิดไฟล์” เพื่อเปิดไฟล์ขนาดเล็ก (ไม่เกินประมาณ 20 KB)
- กด “คัดลอก” เพื่อคัดลอกผลลัพธ์ หรือ “ดาวน์โหลด” เพื่อบันทึกเป็นไฟล์
Base62 คืออะไร
Base62 ใช้ตัวเลขสิบตัว ตัวอักษรพิมพ์ใหญ่ 26 ตัว และตัวอักษรพิมพ์เล็ก 26 ตัว นับเป็นชุดตัวอักษรที่ใหญ่ที่สุดที่ประกอบด้วยตัวอักษรและตัวเลขล้วน ผลลัพธ์จึงไม่ต้อง escape เมื่อใช้ใน URL ชื่อไฟล์ คีย์ของฐานข้อมูล หรือตัวระบุในโค้ด อักขระแต่ละตัวบรรจุข้อมูลประมาณ 5.95 บิต ทำให้เอาต์พุตมีขนาดประมาณ 1.34 เท่าของอินพุต ซึ่งกะทัดรัดเกือบเท่า Base64 แต่ไม่มี +, /, =, - หรือ _
เนื่องจาก 62 ไม่ใช่เลขยกกำลังของสอง เครื่องมือนี้จึงมองอินพุตทั้งหมดเป็นตัวเลขขนาดใหญ่ตัวเดียวแล้วแปลงเป็นฐาน 62 เช่นเดียวกับ Base58 และ Base36 ไบต์ศูนย์ที่นำหน้าแต่ละไบต์จะถูกเขียนเป็น 0 นำหน้า เพื่อให้คงอยู่เมื่อแปลงไปแล้วแปลงกลับ อินพุตจำกัดไว้ที่ประมาณ 20 KB เพราะการคำนวณจะช้าลงเมื่อข้อมูลมีขนาดใหญ่
Base62 ไม่มีมาตรฐานเดียว
Base62 ไม่มี RFC ต่างจาก Base64 และแต่ละการใช้งานก็ต่างกันในหลายจุดจนเอาต์พุตใช้ร่วมกันไม่ได้:
- ลำดับของชุดตัวอักษร เครื่องมือนี้มีให้เลือก
0-9A-Za-z(ค่าเริ่มต้น) และ0-9a-zA-Zไลบรารีอื่นบางตัววางตัวอักษรไว้ก่อนตัวเลข - ศูนย์ที่นำหน้า บางการใช้งานเก็บ
0หนึ่งตัวต่อไบต์ศูนย์ที่นำหน้าหนึ่งไบต์เหมือนเครื่องมือนี้ บางการใช้งานตัดทิ้ง และรูปแบบที่มีความยาวคงที่จะเติมผลลัพธ์จนครบความกว้างที่กำหนด - สิ่งที่ถูกเข้ารหัส ฟังก์ชัน Base62 จำนวนมากเข้ารหัสจำนวนเต็ม เช่น ID ในฐานข้อมูล แทนที่จะเข้ารหัสลำดับของไบต์ บางตัวก็แบ่งข้อมูลเป็นบล็อกขนาดคงที่
หากสตริงจากระบบอื่นถอดรหัสที่นี่แล้วได้ข้อมูลที่อ่านไม่ออก ให้ลองเปลี่ยนไปใช้ชุดตัวอักษรอีกแบบ หากยังไม่ได้ผล แสดงว่าระบบนั้นน่าจะใช้วิธีอื่น
Base62 ใช้ที่ไหนบ้าง
บริการย่อลิงก์จะแปลง ID ที่เพิ่มค่าอัตโนมัติเป็นรหัสสั้น ๆ โดย Base62 เพียงเจ็ดอักขระครอบคลุมค่าได้มากกว่า 3.5 ล้านล้านค่า ID ที่เรียงลำดับได้ เช่น KSUID ใช้ Base62 ความยาวคงที่ 27 อักขระ และบริการหลายแห่งใช้ Base62 สำหรับคีย์ API และโทเค็น เพราะดับเบิลคลิกครั้งเดียวก็เลือกได้ทั้งสตริงและวางได้ทุกที่ หากต้องการแปลงจำนวนเต็มเพียงค่าเดียว ให้ใช้ ตัวแปลงเลขฐาน หรือเขียนโค้ดไม่กี่บรรทัด:
// JavaScript: แปลงจำนวนเต็ม (BigInt) เป็น Base62
const A = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
function toBase62(n) {
let s = '';
do { s = A[Number(n % 62n)] + s; n /= 62n; } while (n > 0n);
return s;
}
toBase62(123456789n); // '8M0kX'
ข้อกำหนด
| ชุดตัวอักษร | 0-9 A-Z a-z |
|---|---|
| ขนาดเอาต์พุต | ประมาณ 134% (แปลงแบบเลขจำนวนใหญ่) |
| แพดดิง | ไม่มี |
| มาตรฐาน | ไม่มีมาตรฐานอย่างเป็นทางการ |
| แยกตัวพิมพ์เล็ก-ใหญ่ | ใช่ |
ตัวอย่าง
| อินพุต (UTF-8) | เอาต์พุต |
|---|---|
Hello, World! | 1wJfrzvdbtXUOlUjUf |
Base64.is | NWxjrFq4r3rv |
你好 | 19PqtKE1t |
คำถามที่พบบ่อย
Base62 ปลอดภัยสำหรับ URL หรือไม่
ทำไมสตริง Base62 ของฉันจึงถอดรหัสได้ข้อความที่ผิด
การใช้งาน Base62 แต่ละแบบใช้ลำดับชุดตัวอักษรและวิธีการต่างกัน ให้ลองสลับระหว่างชุดตัวอักษร 0-9A-Za-z และ 0-9a-zA-Z หากใช้ไม่ได้ทั้งคู่ สตริงนั้นน่าจะสร้างจากจำนวนเต็มหรือด้วยอัลกอริทึมอื่น
Base62 แยกตัวพิมพ์เล็ก-ใหญ่หรือไม่
แยก ตัวพิมพ์ใหญ่และตัวพิมพ์เล็กแทนค่าที่ต่างกัน จึงไม่ควรแปลงสตริง Base62 เป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กเด็ดขาด