Công cụ mã hóa và giải mã Hex (Base16)

Chuyển văn bản, tệp hoặc byte thô sang thập lục phân và ngược lại. Chọn kiểu chữ hoa thường, dấu phân cách và tiền tố 0x hoặc \x; bộ giải mã tự làm sạch các định dạng hex phổ biến cho bạn.

Chạy hoàn toàn trong trình duyệt của bạn. Không có gì được tải lên.

Cách sử dụng

  1. Chọn Mã hóa để chuyển văn bản sang hex, hoặc Giải mã để chuyển hex trở lại thành văn bản.
  2. Nhập hoặc dán dữ liệu đầu vào, hoặc mở một tệp để xem các byte của tệp ở dạng hex.
  3. Đặt các tùy chọn: Chữ hoa, Dấu phân cách (Không, Dấu cách hoặc Dấu hai chấm) và Tiền tố (Không, 0x hoặc \x).
  4. Sao chép kết quả hoặc tải xuống dưới dạng tệp.

Thập lục phân (Base16) là gì?

Hệ thập lục phân dùng mười sáu ký hiệu: các chữ số từ 0 đến 9 và các chữ cái từ A đến F. Một chữ số hex chứa bốn bit, nên mỗi byte được viết bằng đúng hai chữ số, từ 00 đến FF. Đầu ra có kích thước gấp đôi đầu vào, lớn hơn Base64 hay Base32, nhưng ranh giới giữa các byte vẫn hiện rõ, vì thế trình gỡ lỗi, trình chỉnh sửa hex và công cụ mạng đều hiển thị dữ liệu theo cách này.

RFC 4648 chuẩn hóa cách mã hóa này với tên Base16, dùng bảng ký tự chữ hoa và không có phần đệm. Trên thực tế, chữ thường cũng phổ biến không kém, và các bộ giải mã, kể cả công cụ này, đều chấp nhận cả hai.

Hex được dùng ở đâu

  • Mã băm và khóa. Một giá trị băm SHA-256 dài 32 byte, được viết thành 64 chữ số hex. Khóa mật mã, UUID và tổng kiểm tra cũng thường được hiển thị ở dạng hex.
  • Địa chỉ phần cứng. Địa chỉ MAC gồm sáu byte ở dạng hex, thường được phân tách bằng dấu hai chấm. Dấu phân cách Dấu hai chấm cho ra đúng định dạng đó.
  • Chuỗi thoát. Chuỗi trong C, Python và JavaScript chấp nhận \x theo sau là hai chữ số hex để biểu diễn một byte, đúng như những gì tùy chọn tiền tố \x tạo ra.
  • Định dạng web. Màu CSS như #FF8800 là ba byte ở dạng hex, còn mã hóa phần trăm trong URL viết mỗi byte thành % cộng hai chữ số hex.

Giải mã hex sang văn bản

Bộ giải mã khá dễ tính về định dạng. Nó chấp nhận chữ số viết hoa lẫn viết thường, bỏ qua dấu cách, ký tự xuống dòng, dấu phẩy, dấu hai chấm, dấu chấm phẩy và dấu gạch nối, đồng thời loại bỏ các tiền tố 0x, \x, % và &#x. Bạn có thể dán nguyên đầu ra của xxd -p, địa chỉ MAC, UUID, danh sách 0x phân tách bằng dấu phẩy, chuỗi thoát %XX và thực thể hex của HTML. Mỗi byte cần hai chữ số, nên số lượng chữ số lẻ sẽ bị báo lỗi. Các byte được hiển thị dưới dạng văn bản theo bảng mã đã chọn.

Để chuyển hex sang một kiểu mã hóa khác mà không qua văn bản, hãy dùng Hex sang Base64 hoặc Base64 sang Hex.

Hex trong mã nguồn

# Python
'Hi'.encode().hex()                 # '4869'
bytes.fromhex('4869').decode()      # 'Hi'

// Node.js
Buffer.from('Hi').toString('hex')             // '4869'
Buffer.from('4869', 'hex').toString('utf8')   // 'Hi'

# Shell
printf 'Hi' | xxd -p                # 4869

Đặc tả

Bảng ký tự0-9 A-F
Kích thước đầu ra2 ký tự cho mỗi byte (200%)
Phần đệmKhông có
Tiêu chuẩnRFC 4648, mục 8
Phân biệt hoa thườngKhông

Ví dụ

Đầu vào (UTF-8)Đầu ra
Hello, World!48656c6c6f2c20576f726c6421
Base64.is4261736536342e6973
你好e4bda0e5a5bd

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

Làm sao chuyển hex sang văn bản?

Chuyển sang Giải mã và dán chuỗi hex. Dấu cách, dấu hai chấm và tiền tố 0x hoặc \x được tự động loại bỏ, và các byte được hiển thị dưới dạng văn bản UTF-8 trừ khi bạn chọn bảng mã khác.

Hex nên viết hoa hay viết thường?

Cả hai đều biểu diễn cùng các byte. RFC 4648 dùng chữ hoa, trong khi nhiều ngôn ngữ lập trình in ra chữ thường. Hãy bật Chữ hoa nếu hệ thống đích yêu cầu chữ in hoa; bộ giải mã chấp nhận cả hai.

Vì sao hex dài gấp đôi dữ liệu gốc?
Mỗi byte trở thành hai ký tự, tức tăng 100%. Base64 chỉ tăng khoảng 33%. Nếu kích thước quan trọng, hãy chuyển các byte bằng Hex sang Base64.
Việc này có giống chuyển một số sang hex không?
Không hẳn. Công cụ này mã hóa một dãy byte, ví dụ các byte của một đoạn văn bản. Để chuyển một số nguyên duy nhất, ví dụ 255 thành FF, hãy dùng công cụ chuyển đổi cơ số.