文本与十六进制转换的含义
文本和十六进制是同一组底层字节的两种观察方式。人通常阅读字符,而协议、调试器、文件格式和底层文档更常用两位十六进制数字表示一个字节。本工具不会把文本简单当作 ASCII,而是先按 UTF-8 编码,再输出 00 到 FF 的字节值。反向转换时,会先解析字节,再进行严格 UTF-8 解码。
这对中文、重音字符和表情尤其重要。它们往往需要 2、3 或 4 个 UTF-8 字节。正确的结果应与网络请求、UTF-8 文件、数据库字段或程序中的字节数组一致,而不是 JavaScript 字符编码值的简单拼接。
使用方法
先选择方向,再输入内容并执行转换。分隔符和大小写设置只影响文本转十六进制。
- 需要查看文本对应字节时选择“文本转十六进制”;已有字节时选择“十六进制转文本”。
- 输入文本时可使用任意 Unicode 字符;输入十六进制时,每个字节使用两位数字,可用空格、冒号、逗号、分号、连字符或下划线分隔。
- 编码时可选择大写或小写,并选择紧凑、空格分隔或冒号分隔格式。
- 点击“计算”,检查结果以及 UTF-8 字节数和 Unicode 字符数。
- 复制结果用于代码、文档或抓包分析;处理未知数据时建议保留原始字节用于核对。
UTF-8 文本与十六进制示例
这些案例说明“字符”和“字节”并不是一一对应。
| 输入 | 输出 | 说明 |
|---|---|---|
| Hello | 48 65 6C 6C 6F | 基础拉丁字母各占一个 UTF-8 字节。 |
| café | 63 61 66 C3 A9 | é 使用 C3 A9 两个字节。 |
| 你好 | E4 BD A0 E5 A5 BD | 每个汉字通常占三个 UTF-8 字节。 |
| 👋 | F0 9F 91 8B | 该表情显示为一个符号,但编码为四个字节。 |
| 00 41 0A | NUL、A、换行 | 控制字节可能不可见,或会改变输出布局。 |
| C3 28 | 错误 | C3 需要合法续字节,28 不符合 UTF-8 规则。 |
支持的输入格式
文本模式使用浏览器 TextEncoder 按 UTF-8 编码,保留换行、制表符、组合字符、表情和多语言文字。字符数按 Unicode 码点统计,字节数按实际 UTF-8 数据统计。一个可见字形仍可能由多个码点组成。
十六进制模式按字节处理。最终每个字节必须恰好两位。支持紧凑形式、单个 0x 前缀、每字节 0x 前缀及常见分隔符。去除格式后若长度为奇数,会因为缺少半个字节而被拒绝。
- 允许 0-9、A-F 或 a-f。
- 0x 前缀可省略,也可写在每个字节前。
- 严格解码不会用替换字符掩盖损坏的 UTF-8。
- 空输入得到空输出,不会调用服务器。
转换算法
文本转十六进制时,TextEncoder 生成 Uint8Array。每个字节转为 16 进制并补足两位,再按所选分隔符拼接。
十六进制转文本时,工具先移除允许的格式字符,校验字符集合和偶数长度,再每两位解析为一个字节。TextDecoder 使用 fatal 模式,非法起始字节、缺失续字节或孤立续字节都会直接报错。
本页不会猜测 UTF-16、Latin-1、GBK 等编码。相同字节在不同编码下可能表示不同文本,因此明确固定 UTF-8 更可靠。
实际用途
当系统展示原始字节而不是文字时,十六进制视图非常有用。
调试 API 数据
核对请求体中的空格、换行、非 ASCII 名称或表情是否按预期编码。
检查文件与数据库
查看二进制文件、配置导出或数据库转储中的 UTF-8 文本片段。
生成代码字节常量
为测试、固件、协议示例、SQL 十六进制字面量或字节数组生成数据。
学习 Unicode
直观看到字符数、码点数和 UTF-8 字节数之间的区别。
常见错误与边界
多数问题来自混淆字符、码点、字节,或输入实际采用了其他编码。
十六进制位数为奇数
一个字节必须有两位,应补回缺失的前导零或从源数据恢复缺失半字节。
使用了错误编码
UTF-16、Windows-1252、Latin-1 或 GBK 字节不一定能按 UTF-8 解码。
不可见控制字符
NUL、制表符和换行可以正确解码,但可能看不见或改变排版。
视觉相同但字节不同
不同规范化形式或组合音标可能显示相同,却产生不同字节。
与相关工具的区别
应根据需要观察的表示形式选择工具。
文本转二进制
展示相同 UTF-8 字节的逐位形式;十六进制更紧凑,二进制更适合观察单个位。
ASCII 表
只覆盖前 128 个码点,不能说明完整 UTF-8 多字节序列。
Base64 编码
Base64 适合传输任意字节;十六进制更便于人工检查字节边界。
进制转换器
进制转换器把输入当作一个整数,本工具把每两位当作有顺序的字节。