UTILS.
100% trong trình duyệt
🔢

Mã hóa & Giải mã Base62

Chuyển số nguyên hoặc chuỗi byte đến và từ Base62 gọn nhẹ an toàn cho URL (0-9A-Za-z), hỗ trợ BigInt và biến thể bảng chữ GMP, tất cả trong trình duyệt.

— kết quả hiển thị ở đây —

Về công cụ này

Công cụ Base62 mã hóa các con số và chuỗi byte thành bảng chữ 62 ký hiệu gọn nhẹ 0-9A-Za-z và giải mã ngược lại. Base62 phổ biến cho ID ngắn, URL slug và liên kết rút gọn vì nó vẫn an toàn cho URL mà không cần các ký tự +, / hay = mà Base64 dùng. Toàn bộ việc chuyển đổi chạy cục bộ trong trình duyệt của bạn bằng JavaScript BigInt, nên các giá trị lớn tùy ý đều chính xác và không có gì được tải lên.

Chế độ số nguyên coi đầu vào như một số nguyên có độ chính xác tùy ý (thập phân, hoặc hex có tiền tố 0x): mã hóa liên tục chia cho 62 và thêm alphabet[remainder] vào đầu, còn giải mã tính Σ alphabet.indexOf(ch)·62^position. Chế độ byte coi các byte đầu vào (văn bản UTF-8 hoặc hex) như một số lớn big-endian và áp dụng cùng phép chuyển đổi cơ số 62, nhưng nó cũng bảo toàn các byte số không ở đầu theo kiểu Bitcoin-Base58: mỗi byte 0x00 ở đầu trở thành một ký tự '0' ở đầu để việc chuyển đi-về không mất mát.

Bảng chữ tiêu chuẩn sắp xếp chữ số, rồi chữ hoa, rồi chữ thường (0-9A-Za-z). Một số thư viện — đáng chú ý là những thư viện dựa trên GMP — sắp xếp chữ số, chữ thường, rồi chữ hoa (0-9a-zA-Z), điều này tạo ra kết quả khác nhau cho cùng một giá trị; nút chuyển bảng chữ cho phép bạn khớp với bất kỳ cái nào hệ thống của bạn dùng. Chọn hướng, chế độ số nguyên hay byte, định dạng đầu vào cho byte, và biến thể bảng chữ.

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

Sự khác biệt giữa chế độ số nguyên và byte là gì?
Chế độ số nguyên chuyển một số duy nhất có độ chính xác tùy ý (thập phân hoặc hex 0x) thành chuỗi Base62 và ngược lại thành số nguyên thập phân. Chế độ byte chuyển một chuỗi byte (từ văn bản UTF-8 hoặc hex) như một số lớn big-endian, và bảo toàn các byte số không ở đầu thành các ký tự số-không của bảng chữ ở đầu để dữ liệu nhị phân chuyển đi-về chính xác.
Tại sao lại có hai bảng chữ?
Bảng chữ tiêu chuẩn là 0-9A-Za-z (chữ hoa trước chữ thường). Các thư viện dựa trên GMP dùng 0-9a-zA-Z (chữ thường trước chữ hoa). Cùng một giá trị được mã hóa khác nhau theo mỗi bảng, nên nút chuyển cho phép bạn tương tác với bất kỳ thứ tự nào mà các công cụ khác của bạn mong đợi.
Nó xử lý được số lớn cỡ nào?
Bất kỳ kích thước nào. Công cụ dùng JavaScript BigInt, nên không có giới hạn độ chính xác 2^53 — bạn có thể mã hóa và giải mã số nguyên và chuỗi byte có độ dài tùy ý một cách chính xác, điều này thiết yếu cho các hàm băm, UUID và định danh dài.
Các số không ở đầu được xử lý thế nào trong chế độ byte?
Mỗi byte 0x00 ở đầu được mã hóa thành một ký tự số-không của bảng chữ ở đầu (giống ký tự '1' ở đầu của Base58). Khi giải mã, mỗi ký tự số-không của bảng chữ ở đầu khôi phục một byte 0x00, nên mã hóa rồi giải mã trả về đúng chuỗi byte gốc.

Công cụ khác