如何将十六进制转换为文本
- 粘贴十六进制字符串,例如
48 65 6C 6C 6F、0x48,0x65或\x48\x65。各种分隔符可以混用。 - 解码后的文本会立即显示。如果出现乱码,请换一种编码:UTF-8、ASCII/Latin-1 或 UTF-16。
- 复制文本或将其下载为文件。点击交换按钮,可将文本转换回十六进制。
十六进制转 ASCII 的解码原理
每两位十六进制数字是一个字节,取值从 00 到 FF。在 ASCII 和 UTF-8 中,20–7E 的字节都是可打印字符,所以 48 65 6C 6C 6F 依次读作 H、e、l、l、o,即“Hello”。ASCII 以外的字符在 UTF-8 中占用多个字节,例如汉字“中”是 E4 B8 AD 三个字节。
| 十六进制 | 字符 |
|---|---|
0A | 换行符(LF) |
0D | 回车符(CR) |
20 | 空格 |
21 / 2C / 2E | ! / , / . |
30–39 | 数字 0–9 |
41–5A | 大写字母 A–Z |
61–7A | 小写字母 a–z |
C3 A9 | UTF-8 中的 é |
E2 82 AC | UTF-8 中的 € |
如何选择正确的编码
- UTF-8——网页以及大多数文件和 API 的标准编码。纯 ASCII 文本同时也是有效的 UTF-8。
- ASCII / Latin-1 (Windows-1252)——每个字符占一个字节,常见于旧系统中的西欧语言文本。每个字节都对应一个字符,因此解码永远不会失败。
- UTF-16 LE/BE——每个字符占两个字节,用于 Windows API、Java 和 JavaScript 字符串:
48 00 69 00在 UTF-16 LE 中就是“Hi”。
如果看到 � 符号,说明有些字节在所选编码中无效,或者这段十六进制根本不是文本,而是图片、哈希值或压缩数据等二进制数据。
用代码实现十六进制转字符串
- Python:
bytes.fromhex('48656c6c6f').decode() - Node.js:
Buffer.from('48656c6c6f', 'hex').toString() - 浏览器 JavaScript:
new TextDecoder().decode(Uint8Array.from('48656c6c6f'.match(/../g), (h) => parseInt(h, 16))) - Linux 和 macOS:
echo 48656c6c6f | xxd -r -p
常见问题
十六进制转文本和十六进制转 ASCII 有什么区别?
ASCII 只包含 128 个字符(字节 00–7F):英文字母、数字和标点符号。十六进制转文本还涵盖中文等其他语言的字符和 emoji,它们在 UTF-8 中占 2–4 个字节。对于纯英文文本,两者的结果相同。
为什么会提示“字节不完整”?
每个字节必须恰好由两位十六进制数字组成。数字个数为奇数,通常意味着缺少了前导零(应写 0A 而不是 A),或者复制时漏掉了某个字符。错误提示会指出问题所在的位置。
可以解码带 0x 或 \x 前缀的十六进制吗?
可以。0x、\x 和 % 等前缀,以及空格、换行、逗号、冒号和短横线都会被自动去除,因此 C 语言数组、Python 字节串和十六进制转储都可以直接粘贴。
我的数据会被上传吗?
不会。十六进制数据由浏览器中的 JavaScript 解码,始终不会离开你的设备。