Mã hóa Hex

Dán văn bản bên dưới và nhấp Mã hóa để chuyển đổi sang chuỗi thập lục phân. Mọi xử lý đều diễn ra cục bộ trong trình duyệt của bạn.

Đã sao chép!

Hex Encoding là gì?

Mã hóa thập lục phân chuyển đổi mỗi byte dữ liệu thành chuỗi hex hai ký tự (00ff). Điều này hữu ích để kiểm tra dữ liệu nhị phân, gỡ lỗi giao thức mạng và biểu diễn mảng byte trong mã nguồn.

Các ký tự UTF-8 sử dụng nhiều hơn một byte sẽ tạo ra nhiều cặp hex.

Dấu phân cách và kiểu chữ là do bạn chọn: không chèn gì giữa các byte để có chuỗi gọn, dùng khoảng trắng cho dễ đọc, hoặc dùng dấu hai chấm theo lối người ta hay viết dấu vân tay và địa chỉ MAC. Mọi thứ diễn ra trong trình duyệt của bạn.

Bạn đang gỡ lỗi thứ gì đó không chịu giải mã?

Một payload không chịu giải mã thường là triệu chứng chứ không phải lỗi gốc: mã hoá hai lần ở đâu đó trong đường ống, bộ ký tự được đoán thay vì được khai báo, một token ký trên những byte không hẳn là byte mà ai đó trông đợi. Chúng tôi làm đúng loại việc này, trên các tích hợp, API và những hệ thống chuyền dữ liệu qua lại.

Cho chúng tôi biết chỗ nào đang hỏng

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

Mã hoá hex dùng để làm gì?
Hex là thứ người ta tìm đến khi con người phải tự đọc các byte. Mã băm, tổng kiểm tra, khoá mật mã, giá trị màu, địa chỉ MAC, bản kết xuất bộ nhớ và bản bắt gói tin đều được trình bày ở dạng hex, vì mỗi byte thành đúng hai ký tự, nhờ vậy các vị trí thẳng cột và một byte sai lộ ra ngay. Đây cũng là cách quen thuộc để dán dữ liệu nhị phân vào mã nguồn.
Mã hoá hex khác Base64 ở chỗ nào?
Hex tốn chỗ hơn nhưng dễ đọc hơn. Mỗi byte thành hai ký tự nên kết quả đúng gấp đôi đầu vào, trong khi Base64 chỉ lớn hơn khoảng một phần ba. Bù lại, hex có phép ánh xạ cố định và rõ ràng: bạn chỉ vào một cặp là biết đó là byte nào, đếm độ lệch bằng mắt, và sửa một byte mà không động đến những byte xung quanh. Base64 thắng ở nơi kích thước quan trọng, hex thắng ở nơi có người đang nhìn.
Vì sao đôi khi một ký tự lại thành nhiều cặp hex?
Vì hex mã hoá byte chứ không mã hoá ký tự, và văn bản trở thành byte thông qua UTF-8. Mọi thứ nằm trong phạm vi ASCII là một byte, tức một cặp. Chữ Latinh có dấu, chữ Hy Lạp và Kirin chiếm hai byte, phần lớn chữ Hán, Nhật, Hàn chiếm ba byte, còn emoji chiếm bốn. Vì thế một chuỗi năm ký tự hoàn toàn có thể ra thành hai mươi cặp hex.
Nên chọn dấu phân cách nào?
Tuỳ vào nơi kết quả sẽ đi tới. Không chèn gì giữa các byte là thứ mà mã nguồn và phần lớn API mong đợi, và cũng ngắn nhất. Khoảng trắng giúp một chuỗi dài dễ đọc và là dạng bạn thấy trong bản dump. Dấu hai chấm là quy ước cho dấu vân tay chứng chỉ và địa chỉ MAC. Các byte trong cả ba trường hợp là như nhau, chỉ khác dấu ngăn ở giữa.
Mã hoá hex có phải là băm không?
Không, dù hai thứ này thường xuất hiện cùng nhau. Băm là hàm một chiều: nó rút gọn mọi đầu vào thành một chuỗi tóm tắt có độ dài cố định và không thể đưa ngược về bản gốc. Hex là cách viết byte ra giấy và đảo ngược lại được. Mã băm thường được hiển thị ở dạng hex, nên hai thứ trông giống nhau, nhưng mã hoá hex một mật khẩu chẳng bảo vệ được gì cả, chỉ tạo ra một phiên bản dài hơn của chính mật khẩu đó.