Công cụ mã hóa và giải mã Base36

Chuyển văn bản, byte hex hoặc tệp sang Base36, bảng ký tự gồm mười chữ số và 26 chữ cái, và giải mã chuỗi Base36 trở lại thành byte. Có thể chọn đầu ra chữ hoa.

Chạy hoàn toàn trong trình duyệt của bạn. Không có gì được tải lên.

Cách sử dụng

  1. Chọn Mã hóa để chuyển văn bản sang Base36, hoặc Giải mã để chuyển Base36 trở lại thành văn bản.
  2. Nhập hoặc dán dữ liệu đầu vào, hoặc mở một tệp nhỏ (tối đa khoảng 20 KB).
  3. Bật Chữ hoa nếu bạn cần chữ in hoa trong đầu ra.
  4. Sao chép kết quả hoặc tải xuống dưới dạng tệp.

Base36 là gì?

Base36 biểu diễn dữ liệu bằng mười chữ số và 26 chữ cái Latinh, 0-9 rồi đến a-z. Đây là bảng ký tự lớn nhất có thể tạo từ chữ số và chữ cái khi bỏ qua chữ hoa chữ thường, nên chuỗi Base36 vẫn nguyên vẹn qua các hệ thống thay đổi hoặc bỏ qua kiểu chữ. Mỗi ký tự mang khoảng 5,17 bit, nên đầu ra có kích thước khoảng 1,55 lần đầu vào, ngắn hơn một chút so với Base32.

Vì 36 không phải lũy thừa của hai, các byte không thể đơn giản được cắt thành từng nhóm bit. Thay vào đó, công cụ đọc toàn bộ đầu vào như một số nguyên không dấu rất lớn và chuyển nó sang cơ số 36, cùng phương pháp mà Base58 sử dụng. Một con số sẽ làm mất các byte 0 ở đầu, nên mỗi byte như vậy được viết thành một ký tự 0 ở đầu và được khôi phục khi giải mã. Phép tính này chậm dần với đầu vào lớn, nên công cụ chấp nhận tối đa khoảng 20 KB.

Base36 được dùng ở đâu

  • ID ngắn. Dịch vụ rút gọn URL, mã đơn hàng và mã vé thường hiển thị ID số trong cơ sở dữ liệu ở cơ số 36. Ví dụ, Reddit dùng cơ số 36 cho ID bài đăng và bình luận.
  • Nơi không phân biệt chữ hoa chữ thường. Tên DNS và một số hệ thống tệp bỏ qua kiểu chữ. Vì lý do này, IPFS dùng dạng Base36 của một số mã định danh trong địa chỉ cổng (gateway) dạng tên miền con.
  • Số trong mã nguồn. Cơ số 36 là cơ số cao nhất mà hầu hết ngôn ngữ lập trình hỗ trợ sẵn để chuyển đổi số nguyên.

Nếu kiểu chữ được giữ nguyên và bạn muốn chuỗi chữ và số ngắn nhất, Base62 gọn hơn.

Số Base36 trong mã nguồn

Trang này mã hóa byte. Để chuyển một số nguyên, hãy dùng hàm có sẵn trong ngôn ngữ của bạn hoặc công cụ chuyển đổi cơ số:

// JavaScript
(1000000).toString(36)        // 'lfls'
parseInt('lfls', 36)          // 1000000
123456789012345678901234567890n.toString(36)   // BigInt cho giá trị lớn

# Python
int('lfls', 36)               # 1000000
# không có hàm dựng sẵn cho chiều ngược lại

parseInt mất độ chính xác khi vượt quá Number.MAX_SAFE_INTEGER; với giá trị lớn hơn, hãy tự cộng dồn các chữ số vào một BigInt.

Đặc tả

Bảng ký tự0-9 a-z
Kích thước đầu raKhoảng 155% (chuyển đổi số lớn)
Phần đệmKhông có
Tiêu chuẩnKhông có tiêu chuẩn chính thức
Phân biệt hoa thườngKhông

Ví dụ

Đầu vào (UTF-8)Đầu ra
Hello, World!fg3h7vqw7een6jwwnzmp
Base64.is76f8bz4veeatf7
你好2h5exfqm65

Câu hỏi thường gặp

Base36 có phân biệt chữ hoa chữ thường không?

Không. Đầu ra mặc định là chữ thường, và tùy chọn Chữ hoa chuyển nó sang chữ in hoa. Bộ giải mã chấp nhận cả hai kiểu chữ.

Vì sao công cụ khác cho kết quả Base36 khác?

Base36 không có tiêu chuẩn chính thức. Có công cụ mã hóa một con số, có công cụ mã hóa byte, và chúng xử lý các byte 0 ở đầu theo những cách khác nhau. Công cụ này mã hóa các byte đầu vào như một số lớn duy nhất và viết mỗi byte 0 ở đầu thành một ký tự 0.

Có giới hạn kích thước không?
Có, khoảng 20 KB, vì việc chuyển đổi số lớn mất nhiều thời gian hơn khi đầu vào tăng lên. Với tệp và dữ liệu lớn, Base32 hoặc Base64 phù hợp hơn.
Làm sao chuyển một số sang Base36?
Hãy dùng công cụ chuyển đổi cơ số, nơi hiển thị một giá trị thập phân ở Base36 và các cơ số khác. Trang này xem đầu vào là văn bản hoặc byte, nên khi bạn gõ 100, công cụ sẽ mã hóa các ký tự 1, 0 và 0 chứ không phải số một trăm.