十六进制转换
文本转十六进制、十六进制转回文本,按 UTF-8 编码,支持空格分隔与 0x 前缀。
结果
使用指南
- 选方向
「文字 → 十六进制」用于查看一段内容在内存里的样子,「十六进制 → 文字」用于还原抓包里抄下来的字节。
- 选输出格式
空格分隔适合逐字节对照,连写适合贴进代码,带 0x 前缀适合从 C 或内存转储里抄来的数据。
- 核对字节数
统计里的字节数能帮你判断中文是不是被当成 GBK 处理过,字节数比预期多就说明编码不对。
常见问题
为什么中文占了三个字节?
UTF-8 用变长编码:ASCII 范围(0 到 127)用一个字节,常用汉字用三个字节, rarer 的生僻字和 emoji 用四个。英文字母和数字各占一个字节,所以纯英文的十六进制长度是原文的两倍。
十六进制和 Base64 有什么区别?
十六进制是直接用 0 到 F 十个字符表示 4 位二进制,一个字节变两个字符,体积翻倍但完全可读可编辑;Base64 用 64 个字符表示 6 位二进制,一个字节变 1.33 个字符,压缩率更好但不可读。十六进制多用于调试和内存转储,Base64 多用于传输和嵌入数据。
解码出来的中文是乱码怎么办?
多半是编码对不上。十六进制本身不带编码信息,如果原数据是 GBK 而工具按 UTF-8 解,就会得到乱码。这个工具固定按 UTF-8 处理,因为它是现在的事实标准;遇到老系统导出的 GBK 数据需要另外用专门的编码转换工具先转一遍。
带 0x 前缀的格式能直接解码吗?
能。解码时会自动剥掉 0x 和 0X 前缀,空格、逗号、冒号、分号都当分隔符忽略,所以从 C 代码、内存转储或寄存器里抄出来的十六进制串可以直接粘进来。