Cách chuyển hex sang text
- Dán chuỗi hex của bạn, ví dụ
48 65 6C 6C 6F,0x48,0x65hoặc\x48\x65. Có thể kết hợp bất kỳ ký tự phân cách nào. - Văn bản đã giải mã hiện ra ngay lập tức. Nếu ký tự hiển thị sai, hãy chọn bảng mã khác: UTF-8, ASCII/Latin-1 hoặc UTF-16.
- Sao chép văn bản hoặc tải xuống dưới dạng file. Nhấn Đảo chiều để chuyển văn bản ngược lại thành hex.
Cách giải mã hex sang ASCII
Mỗi cặp chữ số hex là một byte có giá trị từ 00 đến FF. Trong ASCII và UTF-8, các byte 20–7E là ký tự in được, nên 48 65 6C 6C 6F được đọc là H, e, l, l, o: “Hello”. Các ký tự ngoài ASCII, chẳng hạn chữ tiếng Việt có dấu, chiếm nhiều byte trong UTF-8.
| Hex | Ký tự |
|---|---|
0A | Line feed (xuống dòng) |
0D | Carriage return (về đầu dòng) |
20 | Dấu cách |
21 / 2C / 2E | ! / , / . |
30–39 | Chữ số 0–9 |
41–5A | Chữ in hoa A–Z |
61–7A | Chữ thường a–z |
C3 A9 | é trong UTF-8 |
E2 82 AC | € trong UTF-8 |
Chọn đúng bảng mã ký tự
- UTF-8 – chuẩn trên web và trong hầu hết các file và API. Văn bản ASCII thuần cũng là UTF-8 hợp lệ.
- ASCII / Latin-1 (Windows-1252) – mỗi ký tự một byte, dành cho văn bản Tây Âu từ các hệ thống cũ. Mọi byte đều ứng với một ký tự, nên việc giải mã không bao giờ thất bại.
- UTF-16 LE/BE – mỗi ký tự hai byte, được dùng trong Windows API, chuỗi Java và JavaScript:
48 00 69 00là “Hi” trong UTF-16 LE.
Nếu bạn thấy ký hiệu �, một số byte không hợp lệ trong bảng mã đã chọn – hoặc chuỗi hex là dữ liệu nhị phân như hình ảnh, mã băm (hash) hay dữ liệu nén chứ không phải văn bản.
Chuyển hex sang chuỗi (string) trong lập trình
- Python:
bytes.fromhex('48656c6c6f').decode() - Node.js:
Buffer.from('48656c6c6f', 'hex').toString() - JavaScript trên trình duyệt:
new TextDecoder().decode(Uint8Array.from('48656c6c6f'.match(/../g), (h) => parseInt(h, 16))) - Linux và macOS:
echo 48656c6c6f | xxd -r -p
Câu hỏi thường gặp
Hex sang text và hex sang ASCII khác nhau thế nào?
ASCII gồm 128 ký tự (byte 00–7F): chữ cái tiếng Anh, chữ số và dấu câu. Hex sang text còn bao gồm ký tự của các ngôn ngữ khác – như chữ tiếng Việt có dấu – và emoji, được UTF-8 lưu bằng 2–4 byte. Với văn bản tiếng Anh thông thường, cả hai cho cùng một kết quả.
Vì sao lại báo lỗi byte chưa đủ chữ số?
Mỗi byte cần đúng hai chữ số hex. Số chữ số lẻ thường có nghĩa là thiếu số 0 ở đầu (viết 0A, không phải A) hoặc một ký tự đã bị mất khi sao chép. Thông báo lỗi sẽ chỉ ra vị trí xảy ra vấn đề.
Có thể giải mã hex chứa tiền tố 0x hoặc \x không?
Có. Các tiền tố như 0x, \x và %, cũng như dấu cách, ngắt dòng, dấu phẩy, dấu hai chấm và dấu gạch ngang, đều được loại bỏ tự động, nên bạn có thể dán trực tiếp mảng C, chuỗi byte Python và hex dump.
Dữ liệu của tôi có bị tải lên đâu không?
Không. Chuỗi hex được giải mã bằng JavaScript trong trình duyệt của bạn và không bao giờ rời khỏi thiết bị.