Mã hóa / giải mã Hex

Đổi văn bản hoặc file sang hex, hoặc dán hex vào để lấy lại byte. Copy thẳng từ hexdump hay mảng C cũng được — dấu phân cách sẽ được bỏ qua.

File không bao giờ rời khỏi thiết bị của bạn

Tùy chọn

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ự:

ByteNửa caoNửa thấpHex
00000
100100a
2551515ff

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 ef
  • de:ad:be:ef
  • dead-beef
  • 0xde, 0xad, 0xbe, 0xef
  • \xde\xad\xbe\xef

Cả năm dòng đều ra đúng bốn byte như nhau.

Mẹo: Đang đối chiếu file tải về với checksum công bố? Mã hóa file sang hex, không dấu phân cách, chữ thường, rồi so với giá trị công bố — hai chuỗi phải khớp từng ký tự.

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ậnDấu phân cáchTiền tốKiểu chữ
Checksum, giá trị cấu hìnhkhôngtắtthường
Thứ cho người đọckhoảng trắngtắtthường
Mảng C hay Rustdấu phẩybậttùy
Địa chỉ MAC, vân tayhai chấmtắtHOA

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ì:

HexBase64
Dung lượnggấp 2 lầngấp 1,33 lần
Đọc được từng bytekhông
Bảng chữ16 ký tự64 ký tự
Việc thường dùngsoi 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.

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

Dữ liệu của tôi có bị gửi đi đâu không?
Không. Phép chuyển đổi chạy trong tab trình duyệt, bằng JavaScript trên máy bạn, và không request nào mang đầu vào rời khỏi thiết bị. Mở tab Network trong lúc chuyển đổi sẽ thấy trống trơn. Điều đó có ý nghĩa khi đám byte kia là ảnh firmware, file khóa hay bản bắt gói từ một hệ thống bạn không được phép chia sẻ.
Nó đọc được hex tôi copy từ hexdump hay mảng C không?
Được, và đó là trường hợp thường chứ không phải ngoại lệ. Khoảng trắng, tab, xuống dòng, dấu phẩy, hai chấm và gạch ngang giữa các byte đều được bỏ qua; các dấu 0x và backslash-x mà C, Python hay shell dùng để đánh dấu byte cũng được nhận ra và bỏ đi. Cứ dán nguyên thứ bạn đang có, thường là chạy luôn.
Sao nó báo tôi có số lẻ chữ số?
Mỗi byte đúng hai chữ số hex, nên một dãy hợp lệ luôn có số chữ số chẵn. Số lẻ nghĩa là thiếu mất một chữ số — copy hụt một ký tự, một dòng bị ngắt giữa byte, hoặc số 0 đứng đầu bị bảng tính cắt mất. Thông báo có kèm số đếm được để bạn dò ra chỗ hụt.
Nên chọn dấu phân cách nào?
Tùy nơi kết quả sẽ đi tới. Không dấu hợp cho checksum hoặc giá trị nhét vào file cấu hình. Một khoảng trắng là dạng dễ đọc mà đa số hexdump dùng. Dấu phẩy kèm tiền tố 0x ra thứ dán thẳng vào mảng C hay Rust. Dấu hai chấm khớp với cách người ta vẫn viết địa chỉ MAC và vân tay chứng chỉ.
Hex với Base64 có phải một không?
Hai cách giải cùng một bài toán với đánh đổi khác nhau. Hex dùng hai ký tự cho mỗi byte nên kết quả gấp đúng đôi đầu vào, bù lại đọc từng byte rất dễ. Base64 dùng bốn ký tự cho ba byte nên chỉ lớn hơn đầu vào một phần ba, nhưng mắt thường không đọc nổi. Cần người soi từng byte thì dùng hex; cần tiết kiệm dung lượng thì dùng Base64.
File lớn tới đâu thì chuyển được?
Chế độ File đọc file theo dòng và chuyển từng phần, nên tab vẫn phản hồi dù file lớn cỡ nào. Giới hạn thực tế là bộ nhớ máy bạn, vì kết quả được giữ cho tới khi bạn bấm Tải về. Chế độ Văn bản chặn ở 1 MB, và đó là giới hạn của ô nhập liệu chứ không phải của bộ chuyển đổi.
Chữ hoa hay chữ thường có quan trọng không?
Với bộ giải mã thì không — cái này nhận cả hai, kể cả lẫn lộn trong cùng một chuỗi. Nó quan trọng với người đọc và với phép so chuỗi. Checksum công bố trên trang phát hành thường viết thường, còn vân tay chứng chỉ và địa chỉ MAC thường viết hoa, nên hãy theo quy ước của thứ bạn đang đối chiếu.