文本转二进制:转换差异、边界与常见坑

在线纯文本转二进制:按 UTF-8 或 ASCII 输出 8 位二进制分组,并同时给出字节数与分组数,让体积估算不再靠猜;分组长度异常会立刻暴露复制时的缺位;转换后可反向再校验一次。

文本转二进制就是按编码逐字符取字节:ASCII 每字符 1 字节,UTF-8 下一个汉字 3 字节、emoji 4 字节。长度因此与"看起来几个字"无关,做容量估算时必须按字节算。

两种格式的差异对照

维度文本(字符)二进制(字节)
单位字符(码点)字节(8 位一组)
英文字符1 个字符1 字节(ASCII 兼容)
中文字符1 个字符3 字节(UTF-8 变长编码)
Emoji1 个"字符"(实际是代理对/多码点)4 字节,且长度计算易出错
空格与换行可见的空白0x20 与 0x0A,参与编码
可读性人可读人不可读(全是 0/1 或十六进制)
体积按字符计较小ASCII 相同,非 ASCII 膨胀 2–4 倍
可逆性原始同编码口径下完全可逆

边界条件

  • 换行符在不同系统上不同(LF 0x0A 与 CRLF 0x0D0A),跨平台比对二进制串必须先统一换行。
  • 不可见字符(零宽空格 U+200B、BOM U+FEFF)会被编码出来但不显示,肉眼比对长度对不上时先查它们。
  • Emoji 在 UTF-16 下是代理对,按"字符数"分组会切错边界,必须按码点或字节处理。
  • 编码口径不一致(UTF-8 与 UTF-16)时同一文本的二进制串完全不同,还原时必须用同一口径。

常见坑

  • 把二进制串当数字处理,前导 0 被吃掉,按 8 位分组时整段错位。
  • 导出时自动去掉了尾部空格或换行,还原后文本与原文不一致。
  • 中文混排时按"字符数"估算体积,实际字节数是估算的三倍。
  • 用 GBK 编码的中文按 UTF-8 还原,得到一堆乱码且无法自动察觉。

相关工具

常见问题

怎么把 二进制 再转回 纯文本?

使用同工具的交换方向功能,或本站对应的「二进制 转 纯文本」页面,两者都本地运行、数据不上传,可完成往返转换与校验。

纯文本 和 二进制 哪个更适合人类阅读?

这取决于场景:二进制 通常更偏向程序解析与接口传输式的可读形态,而 纯文本 更利于程序解析与接口传输式的程序消费;需要人工编辑时优先选可读性更高的那一侧。

中文转换后为什么比英文长好几倍?

因为按 UTF-8 编码,一个汉字占 3 个字节(24 位),而一个英文字母只占 1 个字节(8 位)。所以同样 10 个字符,中文是 30 字节、英文是 10 字节。这不是工具的问题,而是 UTF-8 的设计(变长编码换兼容性)。

空格和换行也会被编码吗?

会,而且必须——空格是 0x20、换行是 0x0A。如果转换时"顺手"去掉空白,还原回来的文本就和原文不一致了。校验转换是否正确的方法很直接:转过去再转回来,逐字节比对。