Cách sử dụng
- Nhập hoặc dán văn bản vào ô đầu vào.
- Mọi kiểu mã hóa đều cập nhật ngay khi bạn gõ: nhị phân, bát phân, thập phân, hex, các biến thể Base32, từ Base36 đến Base91, uuencode và xxencode.
- So sánh các kết quả để xem kiểu nào ngắn nhất hoặc chỉ dùng những ký tự mà bạn chấp nhận được.
- Nhấn Sao chép bên cạnh kết quả bạn cần.
Mọi kiểu mã hóa từ cùng một đầu vào
Mỗi kiểu mã hóa trên trang này biến cùng một dãy byte thành một tập ký tự khác nhau. Đặt chúng cạnh nhau là cách nhanh nhất để chọn kiểu mã hóa cho dự án, nhận ra một chuỗi bạn bắt gặp trong log hay tệp cấu hình, hoặc tìm hiểu sự khác biệt giữa các định dạng. Văn bản của bạn được mã hóa thành các byte UTF-8, nên một chữ cái có dấu như chữ é chiếm hai byte và một chữ Hán chiếm ba byte. Mọi thứ đều chạy trong trình duyệt của bạn.
- Số theo từng byte. Nhị phân, bát phân và thập phân viết riêng từng byte. Dễ đọc nhưng dài.
- Nhóm bit. Hex, Base32 (cùng Base32hex, Crockford và z-base-32), Base64 và Base64URL gán cho mỗi ký tự một số bit cố định, nên độ dài đầu ra chỉ phụ thuộc vào độ dài đầu vào.
- Số lớn. Base36, Base58 và Base62 xem toàn bộ đầu vào như một số nguyên lớn. Độ dài có thể chênh nhau một ký tự tùy theo giá trị, và các byte 0 ở đầu được giữ lại thành các ký tự ở đầu.
- Khối. Base45 biến 2 byte thành 3 ký tự, Ascii85, Z85 và Base85 biến 4 byte thành 5 ký tự, còn Base91 gói 13 hoặc 14 bit vào mỗi cặp ký tự.
- Dòng. uuencode và xxencode là các định dạng cũ của email và Usenet, ghi dữ liệu thành từng dòng, mỗi dòng bắt đầu bằng một ký tự cho biết độ dài.
So sánh kích thước đầu ra
Mỗi kiểu mã hóa cần bao nhiêu ký tự cho một byte đầu vào, và một giá trị 32 byte như giá trị băm SHA-256 hay khóa công khai Ed25519 sẽ dài bao nhiêu:
| Kiểu mã hóa | Số ký tự mỗi byte | 32 byte trở thành |
|---|---|---|
| Base16 (hex) | 2,0 | 64 |
| Base32 | 1,6 | 56 (52 nếu không có phần đệm) |
| Base36 | khoảng 1,55 | 49 hoặc 50 |
| Base45 | 1,5 | 48 |
| Base58 | khoảng 1,37 | 43 hoặc 44 |
| Base62 | khoảng 1,34 | 42 hoặc 43 |
| Base64 | khoảng 1,33 | 44 (43 nếu không có phần đệm) |
| Base85 | 1,25 | 40 |
| Base91 | khoảng 1,23 | 39 hoặc 40 |
Chuyển từ hex sang Base64 giúp rút ngắn một phần ba độ dài. Đi xa hơn, từ Base64 sang Base91, chỉ tiết kiệm thêm khoảng 8%.
Nên chọn kiểu mã hóa nào
Kết quả ngắn nhất chưa chắc đã là tốt nhất. Ascii85 có thể chứa dấu nháy và dấu gạch chéo ngược, còn Base91 có thể chứa dấu nháy kép, nên cả hai có thể cần thoát ký tự trong JSON, HTML hoặc lệnh shell. Hãy cân nhắc chuỗi sẽ được dùng ở đâu:
- URL và tên tệp: Base64URL, Base58 hoặc Base62.
- Đọc thành tiếng hoặc gõ tay: Crockford Base32 hoặc Base58, vốn đã loại bỏ các ký tự trông giống nhau.
- Hệ thống không phân biệt hoa thường: hex, Base32 hoặc Base36.
- Mã QR: Base45, chỉ dùng các ký tự thuộc chế độ chữ và số của mã QR.
- Văn bản gọn trong PDF, Git hoặc ZeroMQ: Ascii85, Base85 hoặc Z85.
- Tương thích tối đa: Base64, được hầu hết mọi ngôn ngữ lập trình và nền tảng hỗ trợ.
Câu hỏi thường gặp
Kiểu mã hóa nào cho kết quả ngắn nhất?
Trong các kiểu mã hóa trên trang này, Base91 gọn nhất với khoảng 1,23 ký tự mỗi byte, tiếp theo là Ascii85, Z85 và Base85 với 1,25. Base64 cần khoảng 1,33 nhưng được hỗ trợ rộng rãi hơn nhiều, nên thường là lựa chọn mặc định.
Vì sao kết quả Base58 và Base62 có độ dài khác nhau dù đầu vào cùng kích thước?
Chúng chuyển đổi toàn bộ đầu vào như một số lớn, nên độ dài phụ thuộc vào giá trị chứ không chỉ vào kích thước. Mỗi byte 0 ở đầu cũng thêm một ký tự ở đầu. Hex, Base32 và Base64 luôn cho cùng một độ dài với cùng số byte.
Tôi có thể giải mã một chuỗi trên trang này không?
Vì sao kết quả nhị phân dài như vậy?
Nhị phân viết 8 chữ số cho mỗi byte, cộng thêm dấu phân cách, nên dài ít nhất gấp bốn lần hex. Nó dùng để xem từng bit riêng lẻ, không phải để lưu trữ hay truyền dữ liệu.
Văn bản của tôi có bị gửi lên máy chủ không?
Không. Mọi kiểu mã hóa đều được tính bằng JavaScript trong trình duyệt của bạn, và văn bản không bao giờ rời khỏi thiết bị của bạn.