文本转十六进制
文本和十六进制互转。
这个工具能做什么
这个工具做的事很直接:把一段文字按 UTF-8 编码逐字节转成十六进制表示,或者反过来,把一串十六进制字节还原成可读文字。日常调试里经常碰到这种需求——协议文档里给的是十六进制报文,日志里打印出来的是一堆 hex,你想知道它到底对应什么字符串;或者你手里有一段中文,想确认它在网络上传输时实际发出的字节到底是哪几个。手动查 ASCII 表、一个字节一个字节拼,既慢又容易错,尤其中文一个字要占三个字节,肉眼根本对不过来。文本转十六进制、十六进制转文本放在一起,输入什么方向都能立刻看到结果,本地处理不上传,粘贴敏感报文也不用担心。
原理上要抓住一个关键点:十六进制本身不是一种字符编码,它只是字节的一种书写方式。真正决定「文字」和「字节」如何对应的是字符编码,这里用的是 UTF-8。文字转 hex 的过程是先按 UTF-8 把每个字符编码成一个或多个字节,ASCII 范围内的字符占一个字节,常见汉字占三个字节,然后把每个字节的数值写成两位十六进制。比如字母 A 的码点是 65,十六进制就是 41;汉字「中」的 UTF-8 字节是 E4 B8 AD 三个字节。还原时正好相反,把十六进制串每两位切成一个字节,再交给 UTF-8 解码器拼回字符。理解这一层就明白,同一段中文用 GBK 编码得到的 hex 会和 UTF-8 完全不同,字符串转 hex 之前一定要先确认编码,否则还原出来就是乱码。
最典型的场景是调试二进制协议和排查编码问题。比如你在对接一个 TCP 私有协议,抓包工具给出的是 48 65 6c 6c 6f 这样的十六进制流,直接粘进来做 hex 转字符串,立刻看到是 Hello,省去查表的功夫;反过来要构造测试报文,把约定好的字符串转成 hex 填进去就行。另一个常见用途是定位「乱码」的根因:接口返回的中文显示成问号或方块,你把原始字节的十六进制拿来还原,如果 UTF-8 解出来正常、说明是前端渲染或响应头 charset 的问题,如果解出来仍是乱码、那多半是上游用了 GBK 之类的编码,问题就缩小到了具体环节。写单元测试断言字节内容、核对数据库里 BLOB 字段、看文件头 magic number,也都用得上文本 hex 转换。
有几个容易踩的点要提一下。第一,十六进制只是字节的表示,它和 Base64 不是一回事:Base64 是把三个字节压成四个可打印字符、更省空间但不直观,hex 是一字节两字符、体积翻倍但一眼能对齐字节边界,调试时更常用 hex。第二,这个工具做的是可逆的编码转换,不是哈希——MD5、SHA-256 这些也常以十六进制显示,但它们是单向摘要、不能还原回原文,别把两者搞混。第三,还原时输入的十六进制必须是偶数个字符且都在 0-9 a-f 范围内,中间的空格、0x 前缀、大小写通常能兼容,但出现奇数位或非法字符就无法正确切分字节。最后再强调一次,转换方向和编码要对得上,拿 GBK 的字节按 UTF-8 解自然是乱码,这不是工具的问题。
文本转十六进制是一个免费的在线工具,打开网页就能用,不用下载也不用注册。平时大家搜的“文本转十六进制”、“十六进制转文本”、“hex转字符串”,说的都是这个。
常见使用场景
- 把抓包得到的十六进制报文还原成可读字符串
- 构造私有协议测试数据时将字符串转成 hex
- 排查接口中文乱码时核对原始字节编码
- 写单元测试时断言字符串的 UTF-8 字节内容
- 核对数据库 BLOB 字段或文件头的十六进制值
使用方法
- 把内容粘贴到输入框(生成类工具直接设置选项)。
- 按需要选择选项,点操作按钮。
- 结果出现在下方,点「复制结果」即可带走。