HandyTools Hub

文本-二进制转换器

在文本和二进制之间即时转换

0 字符
0 字符

文本转二进制转换器把普通文本改写成 0 和 1 的字符串,也能把这些字符串还原成可读字符。可以选择 7 位或 8 位分组,决定字节之间如何分隔,结果会随着你输入实时更新。它适合正在学习计算机如何表示字符的学生、想查看某个字符串背后字节值的开发者,以及任何需要把一段短消息编码成二进制的人。

使用方法

  1. 选择方向。 文本转二进制用于编码;二进制转文本用于解码。转换在同一个输入框里双向进行。
  2. 选择位宽。 7 位覆盖标准 ASCII;8 位除了 ASCII 外还覆盖 é 这类带重音符号的 Latin-1 字符。
  3. 设置字节分隔符。 默认是字节之间加一个空格,因为它好读;当目标系统要求特定格式时,可以改用双空格或不加分隔符。
  4. 输入文本或粘贴二进制,然后复制输出。字符计数有助于你确认复制粘贴过程中没有丢内容。

实操示例:把「Hi」逐字节拆开

以两个字符的字符串 Hi 为例。

  • H 的 ASCII 码是 72。写成 8 位二进制:01001000。
  • i 的 ASCII 码是 105。写成 8 位二进制:01101001。

用单空格分隔字节编码,结果是 01001000 01101001。解码时反向操作:按空格切开,把每一组八位读成二进制数(01001000 → 64 + 8 = 72 → H),再把字符拼接起来。

同样的方法适用于任何 ASCII 文本。一句 20 个字符的话会变成 20 个字节,也就是 160 位——这正是二进制精确但臃肿的原因,也是十六进制和 Base64 作为更紧凑表示而存在的原因。

7 位、8 位与 UTF-8 的位置

ASCII 最初被定义为 7 位编码,共 128 个值:控制码 0–31,然后是空格、标点、数字、大写和小写字母直到 126,127 保留。七位对当时的硬件很方便,但只留下 128 个位置,够英语用,离覆盖世界各种书写系统还差得远。

第一次扩展是 8 位,增加了 128 个值(128–255),用于带重音的拉丁字母、货币符号和制表符——也就是 Latin-1 范围。再往外,现代文本使用 Unicode,最常见的编码方式是 UTF-8,一个字符可能占两、三或四个字节。这也是这个工具止步于 8 位的原因:它能干净地讲清以字节为基础的模型,而一个中文字符或 emoji 根本塞不进一个分组。

读二进制时有一条有用的规则:永远要知道每个单位有多少位。同一个序列 01001000 01101001 在 8 位模式下是「Hi」;如果按 7 位去解就会变成乱码。编码本身并不自我描述。

常见错误

  • 丢掉前导零。 72 写成二进制是 1001000,但作为一个字节必须写成 01001000。去掉前导零会让后面每一位都错位。
  • 混用位宽。 用 7 位编码、用 8 位解码,字符就会错位。两端设置必须一致。
  • 把二进制和十六进制或 Base64 搞混。 它们都是对同一批字节的编码;二进制只是把每一位都写出来。在它们之间转换是无损的。
  • 假设一个字符就是一个字节。 这只对 ASCII 和 Latin-1 成立。对 Unicode 文本,一个字符可能横跨多个字节,所以字符数和字节数并不相等。
  • 用二进制做存储或传输。 它是最不紧凑的常见表示;把它用于教学和查看,而不是控制载荷体积。

当二进制不再像个新鲜玩意之后,同样的八位思维会贯穿整个计算机领域。Unix 权限 755 是三组三位——分别代表所有者、组和其他人的读、写、执行。像 255.255.255.0 这样的子网掩码,是 24 个置位的比特后面跟着八个零,这就是 /24 简写成立的原因。以 READ | WRITE 传入的功能开关把一个整数里的若干布尔值打包起来,而检查单个开关就是用 flags & 0b100 测试某一位。在这里学会读一个字节,和你用在权限、网络掩码和位运算选项上的是同一项技能。

功能

  • 文本 ↔ 二进制双向转换,结果即时呈现
  • 7 位 ASCII 和 8 位 Latin-1 模式
  • 可选字节分隔符:空格、双空格或无
  • 实时字符计数,用于核对输入和输出长度
  • 一键复制到剪贴板
  • 100% 客户端运行——不会上传任何内容

使用场景

  • 学习: 一位一位地看清一个字符如何映射到一个字节。
  • 教学: 在课堂上演示数制与字符编码。
  • 调试: 当某个服务错误处理字符串时,检查它背后的字节值。
  • 谜题: 为游戏或寻宝活动把一条短消息编码成二进制。
  • 底层工作: 对照数据手册或协议规范确认位模式。

相关工具

常见问题

为什么字母 A 会变成 01000001?

计算机把字符存成数字,而 'A' 在 ASCII 里是 65。把 65 写成二进制就是 01000001——每一位对应 64、32、16、8、4、2、1 这些 2 的幂。前导零会被保留,让这个值填满一个完整的 8 位字节。解码就是反过来:把二进制按八位一组分开,每组转成十进制数字,再把这个数字映射回字符。

7 位模式和 8 位模式有什么区别?

7 位模式只写 ASCII 范围,每个字符用七个二进制数字,覆盖 128 个符号——英文字母、数字和常见标点。8 位模式使用完整的一个字节,能表示 256 个值,覆盖 é、ü、ñ 这类 Latin-1 字符。对于这些范围之外的内容,例如 emoji 或中文,请改用支持 UTF-8 的转换器。

二进制和 Base64 或十六进制是一回事吗?

不是——三者都用不同的方式表示同一批字节。十六进制更紧凑,因为一个十六进制位代表四位;Base64 每个字符打包六位,所以文本仍可打印;二进制则把全部八位都写出来,最直观也最不紧凑。在它们之间转换不会改变底层数据。

为什么二进制里各组之间有空隙?

那些空格是字节分隔符,是为了方便人阅读:01001000 01101001 比 0100100001101001 好读得多。如果你的目标系统要求连续不断的字符串,请在复制前把分隔符设为「无」。

能解码用 7 位分组表示的二进制吗?

可以——解码前选择 7 位模式。这一点很重要,因为没有前导零编码出来的消息会丢失对齐信息:1000001 既可能是 7 位的 'A',也可能是某个 8 位序列的尾部。生成数据时用的是哪种模式本身就是消息的一部分,所以解码时要用与编码时相同的设置。

这个工具支持非拉丁字符吗?

只支持到 8 位(Latin-1)。超出这个范围的字符——西里尔文、中文、emoji——需要 Unicode,一个字符可能占用两、三或四个字节。这个工具面向教学以及 ASCII/Latin-1 数据;处理现代文本请使用 UTF-8 编码器或完整的编码库。

由 HandyTools Hub 团队审校 · 最后更新