onlinetools.dev

Chuyển đổi văn bản ↔ hex / nhị phân

Biến văn bản thành byte hex, nhị phân hay thập phân và giải mã ngược lại

Chạy cục bộ
loading…
Về công cụ này

Xem chính xác văn bản của bạn được tạo nên từ những byte nào: công cụ mã hóa văn bản sang UTF-8 rồi hiển thị dưới dạng giá trị byte thập lục phân, nhị phân hay thập phân — với ký tự phân tách, kiểu chữ hoa thường và tiền tố 0x do bạn chọn. Chiều giải mã thì cố tình dễ tính: nó nhận cả dãy liền mạch (48656c6c6f), các cặp cách nhau bằng dấu cách, kiểu viết ngăn bằng dấu hai chấm như địa chỉ MAC, lẫn các chuỗi thoát \x.

Vì phép mã hóa diễn ra ở mức byte theo UTF-8, các ký tự nhiều byte hiện ra đúng như chúng tồn tại trong bộ nhớ và trên đường truyền: é là c3 a9, 世 là e4 b8 96, còn emoji chiếm bốn byte. Nhờ vậy đây là cách nhanh nhất để mò ra lỗi lệch bảng mã, những bí ẩn quanh BOM, và mấy vụ “sao chuỗi này dài hơn vẻ ngoài của nó”.

Nếu các byte giải ra không phải UTF-8 hợp lệ, công cụ sẽ nói thẳng thay vì in ra một mớ ký tự lỗi — dấu hiệu khá chắc rằng thứ bạn đang xem là dữ liệu nhị phân chứ không phải văn bản.

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

Vì sao một ký tự lại thành mấy byte?
UTF-8 có độ dài thay đổi: ASCII vẫn một byte, phần lớn chữ cái châu Âu chiếm hai byte, ký tự CJK ba byte, emoji bốn byte. Thứ bạn thấy ở đây chính là dãy byte mà bất kỳ hệ thống dùng UTF-8 nào — tệp, HTTP, cơ sở dữ liệu — sẽ lưu cho đoạn văn bản của bạn.
Bộ giải mã chấp nhận những định dạng đầu vào nào?
Thập lục phân ở dạng dãy liền, dạng cặp cách nhau bằng dấu cách, có tiền tố 0x hoặc \x, hoặc ngăn bằng dấu hai chấm/dấu phẩy; nhị phân ở dạng nhóm 8 bit có hoặc không có dấu cách; thập phân ở dạng các giá trị byte ngăn cách nhau. Ký tự phân tách lẫn lộn và khoảng trắng thừa sẽ được dọn tự động.
Vì sao khi giải mã lại báo các byte không phải UTF-8 hợp lệ?
Dãy byte đó vi phạm quy tắc UTF-8 — chẳng hạn một byte ff đứng lẻ, hay một byte tiếp nối mà không có byte dẫn đầu. Dữ liệu có thể là nhị phân, thuộc bảng mã cũ như Latin-1, hoặc bị cắt cụt giữa chừng một ký tự.
Cái này có giống bản hex dump từ xxd không?
Các giá trị byte thì giống hệt; xxd chỉ thêm phần offset và một cột ASCII. Hãy dán những cột thập lục phân của một bản dump xxd vào đây (bỏ cột offset) và nó sẽ giải mã ngon lành.
Công cụ liên quan