ตัวเข้ารหัสและถอดรหัส Base91

แปลงข้อความ ไบต์เลขฐานสิบหก หรือไฟล์เป็น basE91 และแปลงกลับ basE91 บรรจุข้อมูลไบนารีลงในอักขระ ASCII ที่พิมพ์ได้ 91 ตัว และให้เอาต์พุตที่สั้นกว่า Base64 หรือ Base85

ทำงานภายในเบราว์เซอร์ของคุณทั้งหมด ไม่มีการอัปโหลดข้อมูลใด ๆ

วิธีใช้งาน

  1. เลือก “เข้ารหัส” เพื่อแปลงข้อความหรือไบต์เป็น basE91 หรือเลือก “ถอดรหัส” เพื่อแปลง basE91 กลับเป็นข้อมูล
  2. พิมพ์หรือวางอินพุต หรือคลิก “เปิดไฟล์” สำหรับไบต์ดิบ ให้ตั้ง “รูปแบบอินพุต” เป็น “เลขฐานสิบหก”
  3. ผลลัพธ์จะอัปเดตทันทีขณะที่คุณพิมพ์ เมื่อถอดรหัส ให้ตั้ง “รูปแบบเอาต์พุต” เป็น “ข้อความ” หรือ “เลขฐานสิบหก”
  4. กด “คัดลอก” เพื่อคัดลอกผลลัพธ์ หรือ “ดาวน์โหลด” เพื่อบันทึกเป็นไฟล์

basE91 คืออะไร

basE91 คือการเข้ารหัสข้อมูลไบนารีเป็นข้อความที่ออกแบบโดย Joachim Henke โดยใช้อักขระ 91 ตัวจากอักขระ ASCII ที่พิมพ์ได้ 95 ตัว คือทุกตัวยกเว้นช่องว่าง อะพอสทรอฟี ' ยัติภังค์ - และแบ็กสแลช \

basE91 ไม่ได้ทำงานกับบล็อกไบต์ขนาดคงที่ ตัวเข้ารหัสจะสะสมบิตของอินพุตไว้ในบัฟเฟอร์แล้วดึงออกมาครั้งละ 13 บิต หากค่า 13 บิตนั้นมากกว่า 88 จะเขียนเป็นอักขระสองตัว หากมีค่า 88 หรือน้อยกว่า จะดึงบิตที่ 14 มาด้วย ซึ่งยังใส่ได้พอดี เพราะอักขระฐาน 91 สองตัวแทนค่าได้ 91 × 91 = 8281 ค่า ข้อมูลทุก 13 หรือ 14 บิตจึงกลายเป็นอักขระ 2 ตัวพอดี

ผลคือขนาดเพิ่มขึ้นไม่เกินประมาณ 23% และลดลงได้ถึงประมาณ 14% สำหรับข้อมูลที่มีไบต์ศูนย์เรียงกันยาว ๆ ส่วนข้อมูลสุ่มหรือข้อมูลที่บีบอัดแล้วจะได้ผลใกล้กับค่าสูงสุด

basE91 เทียบกับการเข้ารหัสอื่น

การเข้ารหัสจำนวนอักขระขนาดเอาต์พุต
เลขฐานสิบหก162 × อินพุต
Base5858ประมาณ 1.37 × อินพุต
Base64641.33 × อินพุต
Base85 / Ascii85851.25 × อินพุต
basE9191ประมาณ 1.14 ถึง 1.23 × อินพุต

หากต้องการเปรียบเทียบความยาวเอาต์พุตจริงของข้อมูลของคุณ ให้พิมพ์ลงในหน้า การเข้ารหัสทั้งหมด

สิ่งที่ควรทราบ

  • การ escape ชุดตัวอักษรมีเครื่องหมายอัญประกาศคู่ " ซึ่งต้อง escape ใน JSON และในสตริงลิเทอรัลส่วนใหญ่ และมี <, > และ & ซึ่งต้อง escape ใน HTML และ XML นอกจากนี้ basE91 ไม่ปลอดภัยสำหรับ URL
  • ถอดรหัสทั้งสตริง เนื่องจากบิตต่อเนื่องข้ามขอบเขตของอักขระ ส่วนที่ตัดมาจากกลางสตริง basE91 จึงถอดรหัสแยกเดี่ยว ๆ ไม่ได้
  • การรองรับ basE91 ไม่ใช่มาตรฐานของ IETF ผู้พัฒนาเผยแพร่การใช้งานอ้างอิงในภาษา C และภาษาอื่น ๆ และมีการพอร์ตไปยังแพลตฟอร์มส่วนใหญ่ เช่น แพ็กเกจ base91 สำหรับ Python

ข้อกำหนด

ชุดตัวอักษรอักขระ ASCII ที่พิมพ์ได้ 91 ตัว
ขนาดเอาต์พุตประมาณ 123%
แพดดิงไม่มี
มาตรฐานbasE91 (Joachim Henke)
แยกตัวพิมพ์เล็ก-ใหญ่ใช่

ตัวอย่าง

อินพุต (UTF-8)เอาต์พุต
Hello, World!>OwJh>}AQ;r@@Y?F
Base64.isxD7gXm^?t#5
你好I_5k7aPE

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

basE91 มีขนาดเล็กกว่า Base64 หรือไม่

ใช่ Base64 เพิ่มขนาด 33% เสมอ ขณะที่ basE91 เพิ่มไม่เกินประมาณ 23% และเพิ่มน้อยกว่านั้นสำหรับข้อมูลที่มีไบต์ศูนย์จำนวนมาก สำหรับไฟล์ขนาด 1 MB จะประหยัดได้ประมาณ 100 KB

basE91 ใช้อักขระใดบ้าง
ตัวอักษร A-Z และ a-z ตัวเลข 0-9 และสัญลักษณ์ !#$%&()*+,./:;<=>?@[]^_`{|}~" โดยไม่ใช้ช่องว่าง อะพอสทรอฟี ยัติภังค์ และแบ็กสแลช
ทำไมจึงเขียนว่า basE91

เป็นการสะกดชื่อตามแบบที่ผู้พัฒนาใช้ basE91 และ Base91 หมายถึงการเข้ารหัสเดียวกัน และหน้านี้ใช้อัลกอริทึมตามต้นฉบับ

อักขระช่องว่างทำให้การถอดรหัสผิดพลาดหรือไม่

ไม่ทำให้ผิดพลาด ช่องว่างและการขึ้นบรรทัดใหม่ไม่ได้อยู่ในชุดตัวอักษร ตัวถอดรหัสในหน้านี้จึงละเว้นอักขระเหล่านี้ คุณวางข้อความ basE91 ที่ตัดบรรทัดไว้ได้โดยตรง