Hệ thập lục phân viết mỗi byte thành hai ký tự từ 0 tới f, nên đây là định dạng người ta tìm
đến khi cần nhìn vào byte: phần đầu một file, một checksum, một bản bắt gói, mười sáu byte đầu
của thứ không chịu mở ra. Trang này chuyển đổi cả hai chiều, cho chuỗi dán vào lẫn cho cả file,
hoàn toàn trong trình duyệt.
Một byte, hai ký tự
Ánh xạ thẳng thừng theo vị trí, không padding, không trạng thái. Mỗi byte tách làm hai nửa bốn bit, mỗi nửa thành một ký tự:
| Byte | Nửa cao | Nửa thấp | Hex |
|---|---|---|---|
| 0 | 0 | 0 | 00 |
| 10 | 0 | 10 | 0a |
| 255 | 15 | 15 | ff |
Chính sự thẳng thừng đó làm hex hữu ích để soi. Byte thứ mười của file luôn nằm ở ký tự 20 và 21 trong chuỗi hex, nên bạn đếm tới một trường bằng mắt được — thứ mà Base64, vốn dồn ba byte vào bốn ký tự, không cho.
Đọc hex lấy từ nơi khác về
Hex gần như không bao giờ đến tay bạn ở dạng sạch. Nó ra từ hexdump có canh cột, từ header C dưới dạng mảng ngăn bằng dấu phẩy, từ trình xem chứng chỉ với dấu hai chấm, hay từ repr của Python với các dấu backslash-x. Toàn bộ đám dấu má đó bị bỏ qua khi giải mã:
de ad be efde:ad:be:efdead-beef0xde, 0xad, 0xbe, 0xef\xde\xad\xbe\xef
Cả năm dòng đều ra đúng bốn byte như nhau.
Xuất hex cho nơi khác dùng
Các tùy chọn đầu ra tồn tại vì nơi nhận mới là thứ quyết định hình dạng:
| Nơi nhận | Dấu phân cách | Tiền tố | Kiểu chữ |
|---|---|---|---|
| Checksum, giá trị cấu hình | không | tắt | thường |
| Thứ cho người đọc | khoảng trắng | tắt | thường |
| Mảng C hay Rust | dấu phẩy | bật | tùy |
| Địa chỉ MAC, vân tay | hai chấm | tắt | HOA |
Dung lượng, và vì sao có chế độ File
Hex lớn gấp đúng đôi đầu vào — vào 1 MB thì ra 2 MB văn bản. Chính chỗ gấp đôi này làm các công cụ chỉ cho dán đuối sức: một file cỡ vừa đã tạo ra chuỗi lớn hơn nhiều so với sức vẽ của một ô nhập liệu.
Chế độ File né vấn đề bằng cách không bao giờ dựng chuỗi đó thành một khối. File được đọc theo dòng, chuyển từng đoạn, và chỉ ghép lại lúc bạn tải về. Việc nặng chạy ngoài luồng chính nên trang vẫn mượt và thanh tiến độ cho biết đang tới đâu.
Hex hay Base64?
Cả hai đều biến byte thành văn bản. Khác nhau ở chỗ bạn đang tối ưu cho điều gì:
| Hex | Base64 | |
|---|---|---|
| Dung lượng | gấp 2 lần | gấp 1,33 lần |
| Đọc được từng byte | có | không |
| Bảng chữ | 16 ký tự | 64 ký tự |
| Việc thường dùng | soi byte, checksum, địa chỉ | truyền tải, nhúng, token |
Nếu có người sẽ đọc nó, chọn hex. Nếu nó đi qua đường truyền hay vào một trường dữ liệu, chọn Base64.
Khi giải mã thất bại
Công cụ tách bạch hai kiểu sai của hex. Ký tự không hợp lệ nghĩa là có thứ trong đầu vào
không phải chữ số hex và cũng không phải dấu má nó biết bỏ qua — vị trí được báo ra, và thường là
một chữ cái vượt quá f lẫn vào từ đoạn văn xung quanh. Số chữ số lẻ nghĩa là thiếu một chữ
số, và điều đó gần như luôn chỉ về một bản copy bị cắt cụt chứ không phải về dữ liệu.