使用方法
- 选择“文本 → 字节”进行编码,或选择“字节 → 文本”进行解码。
- 选择字节格式:二进制、十六进制、十进制或八进制。
- 输入或粘贴内容。结果和字节数会随输入实时更新。
- 复制结果,或将结果换入输入框以检查往返转换。
工作原理
计算机会将文本存储为字节。此工具使用 UTF-8,这是几乎所有网站和现代系统都在使用的编码。在 UTF-8 中,128 个 ASCII 字符(英文字母、数字和基本标点)各占 1 个字节,因此 H 的二进制表示为 01001000,十六进制表示为 48。其他字符占 2 到 4 个字节:é 占 2 个字节(C3 A9),€ 和 ☕ 占 3 个字节,大多数表情符号占 4 个字节。因此,字节数可能大于字符数,一个字符也可能转换成多个 8 位组。
每个字节有四种常见表示方式:8 位二进制(00000000–11111111)、2 位十六进制(00–FF)、十进制(0–255)或 3 位八进制(000–377)。连续书写字节且不使用分隔符时,二进制、十六进制和八进制值会补齐到固定长度,十进制值会补齐到 3 位,以便之后能准确拆分。
解码时可忽略格式差异:字节之间的空格、换行、逗号和分号都会被忽略,0x 和 0b 前缀以及 \x 转义也会被忽略。每个分组都会经过检查;如果所选格式中包含不允许的数字,或数值大于 255,工具会报告该字节的位置。解码后,工具会检查字节是否为有效的 UTF-8,并在它们不是文本时告知你。
由多个码点组成的字符(例如旗帜或带肤色的表情符号)在这里会计为多个字符,因为每个码点都是单独编码的。
示例
经典的二进制 “Hi”
H 的 ASCII 码为 72,i 的 ASCII 码为 105,因此 “Hi” 的二进制表示为 01001000 01101001,十六进制表示为 48 69,十进制表示为 72 105:2 个字符、2 个字节、16 位。
为什么 “Café” 占 5 个字节
C、a 和 f 各占 1 个字节,而 é 在 UTF-8 中占 2 个字节:11000011 10101001(C3 A9)。这个单词有 4 个字符,却占用 5 个字节;对于数据库列限制和以字节计量的协议字段,这一点很重要。
读取十六进制转储
调试器显示 48 65 6c 6c 6f 2c 20 e4 b8 96 e7 95 8c。选择“字节 → 文本”并使用十六进制格式粘贴,即可得到 “Hello, 世界”;每个汉字占 3 个字节。
常见问题
为什么一个字符会变成 16、24 或 32 位?
在 UTF-8 中,只有 ASCII 字符占 1 个字节(8 位)。带重音符号的字母和大多数其他文字占 2 个字节,中文、日文、韩文和许多符号占 3 个字节,表情符号占 4 个字节。每个字节都会单独显示为一组。
这是 ASCII 还是 UTF-8?
这是 UTF-8。对于纯英文文本,结果与 ASCII 完全相同,因为 UTF-8 的设计兼容 ASCII。仅使用 ASCII 无法表示 ASCII 范围以外的字符。
为什么解码二进制时会报错?
每个字节最多只能有 8 位二进制数字,且只能包含 0 和 1。如果没有空格,数字总数必须是 8 的倍数。错误消息会指出无法读取的字节。
“不是有效的 UTF-8”是什么意思?
这些字节无法组成有效的 UTF-8 序列,例如单独出现一个大于 127 的字节,或序列中途被截断。数据可能来自使用其他编码(如 Windows-1252)的文件,也可能根本不是文本。
隐私
转换在浏览器中使用内置的 UTF-8 编码器和解码器完成。你的文本不会上传、存储,也不会纳入分析统计。