UTILS.
ทำงานในเบราว์เซอร์ 100%
🔢

เข้ารหัสและถอดรหัส Base62

แปลงจำนวนเต็มหรือสตริงไบต์ไปมากับ Base62 ที่ปลอดภัยสำหรับ URL แบบกะทัดรัด (0-9A-Za-z) รองรับ BigInt และรูปแบบตัวอักษร GMP ทั้งหมดในเบราว์เซอร์

— ผลลัพธ์จะแสดงที่นี่ —

เกี่ยวกับเครื่องมือนี้

เครื่องมือ Base62 เข้ารหัสตัวเลขและสตริงไบต์เป็นชุดตัวอักษร 62 สัญลักษณ์ที่กะทัดรัด 0-9A-Za-z และถอดรหัสกลับ Base62 เป็นที่นิยมสำหรับ ID สั้น URL slug และลิงก์ย่อ เพราะยังคงปลอดภัยสำหรับ URL โดยไม่มีอักขระ +, / หรือ = ที่ Base64 ใช้ การแปลงทั้งหมดทำงานภายในเครื่องในเบราว์เซอร์ของคุณด้วย JavaScript BigInt ดังนั้นค่าขนาดใหญ่ตามอำเภอใจจึงแม่นยำและไม่มีการอัปโหลด

โหมดจำนวนเต็มปฏิบัติต่ออินพุตเป็นจำนวนเต็มความแม่นยำตามอำเภอใจ (ฐานสิบ หรือฐานสิบหกนำหน้าด้วย 0x): การเข้ารหัสหารด้วย 62 ซ้ำๆ และเติม alphabet[remainder] ไว้ข้างหน้า และการถอดรหัสคำนวณ Σ alphabet.indexOf(ch)·62^position โหมดไบต์ปฏิบัติต่อไบต์อินพุต (ข้อความ UTF-8 หรือฐานสิบหก) เป็น bignum แบบ big-endian หนึ่งค่าและใช้การแปลงฐาน 62 เดียวกัน แต่ยังคงรักษาไบต์ศูนย์นำหน้าแบบ Bitcoin-Base58 ด้วย: ไบต์ 0x00 นำหน้าแต่ละตัวจะกลายเป็นอักขระ '0' นำหน้าหนึ่งตัว ดังนั้นการแปลงไปกลับจึงไม่สูญเสียข้อมูล

ชุดตัวอักษรมาตรฐานเรียงหลัก แล้วตัวพิมพ์ใหญ่ แล้วตัวพิมพ์เล็ก (0-9A-Za-z) บางไลบรารี — โดยเฉพาะที่สร้างบน GMP — เรียงหลัก ตัวพิมพ์เล็ก แล้วตัวพิมพ์ใหญ่ (0-9a-zA-Z) ซึ่งให้เอาต์พุตต่างกันสำหรับค่าเดียวกัน; ตัวสลับชุดตัวอักษรให้คุณจับคู่กับที่ระบบของคุณใช้ เลือกทิศทาง โหมดจำนวนเต็มหรือไบต์ รูปแบบอินพุตสำหรับไบต์ และรูปแบบชุดตัวอักษร

คำถามที่พบบ่อย

โหมดจำนวนเต็มกับโหมดไบต์ต่างกันอย่างไร?
โหมดจำนวนเต็มแปลงตัวเลขความแม่นยำตามอำเภอใจตัวเดียว (ฐานสิบหรือฐานสิบหก 0x) เป็นสตริง Base62 และกลับเป็นจำนวนเต็มฐานสิบ โหมดไบต์แปลงลำดับของไบต์ (จากข้อความ UTF-8 หรือฐานสิบหก) เป็น bignum แบบ big-endian และรักษาไบต์ศูนย์นำหน้าเป็นอักขระศูนย์นำหน้าในชุดตัวอักษร ดังนั้นข้อมูลไบนารีจึงแปลงไปกลับได้แม่นยำ
ทำไมมีชุดตัวอักษรสองชุด?
ชุดตัวอักษรมาตรฐานคือ 0-9A-Za-z (ตัวพิมพ์ใหญ่ก่อนตัวพิมพ์เล็ก) ไลบรารีที่ใช้ GMP ใช้ 0-9a-zA-Z (ตัวพิมพ์เล็กก่อนตัวพิมพ์ใหญ่) ค่าเดียวกันเข้ารหัสต่างกันในแต่ละแบบ ดังนั้นตัวสลับจึงให้คุณทำงานร่วมกับลำดับที่เครื่องมืออื่นของคุณคาดหวัง
จัดการตัวเลขขนาดใหญ่ได้แค่ไหน?
ขนาดใดก็ได้ เครื่องมือใช้ JavaScript BigInt จึงไม่มีขีดจำกัดความแม่นยำ 2^53 — คุณสามารถเข้ารหัสและถอดรหัสจำนวนเต็มและสตริงไบต์ที่มีความยาวตามอำเภอใจได้อย่างแม่นยำ ซึ่งจำเป็นสำหรับแฮช UUID และตัวระบุยาวๆ
จัดการศูนย์นำหน้าในโหมดไบต์อย่างไร?
ไบต์ 0x00 นำหน้าแต่ละตัวถูกเข้ารหัสเป็นอักขระศูนย์นำหน้าในชุดตัวอักษรหนึ่งตัว (เหมือน '1' นำหน้าของ Base58) ในการถอดรหัส อักขระศูนย์นำหน้าในชุดตัวอักษรแต่ละตัวจะคืนไบต์ 0x00 หนึ่งตัว ดังนั้นการเข้ารหัสแล้วถอดรหัสจึงคืนลำดับไบต์เดิมทุกประการ

เครื่องมือเพิ่มเติม