文本转二进制

转换器

通过 UTF-8 在文本与二进制字符串间互转,逐字符显示 0/1 位序列与字节边界。基于 UTF-8 逐字符处理,常见汉字占 3 字节、emoji 占 4 字节,并标出字节边界。反向可把 0/1 串还原成文本,便于核对串口与协议报文。位串可整体复制。可指定每行输出多少字节便于阅读。

5 字节
纯文本
5 字符
二进制 (UTF-8)
40 位·5 字节

关于 文本转二进制

学习字符编码、调试串口数据、做编程教学演示时,常需要把文字拆成一串 0 和 1。本工具在浏览器本地把文本与二进制位串双向转换,严格基于 UTF-8 编码处理每个字符的字节:一个常见汉字占 3 字节(24 位),emoji 通常占 4 字节(32 位),绝不是一个字固定一个字节。转换结果默认按每 8 位(一个字节)用空格分组,便于人眼比对;还原时自动忽略空格,带不带分组都能正确解析。最容易踩的坑是位数不对齐:还原时需要位串总长度是 8 的倍数,如果从某处复制来的位串被截断一位,就会因为无法对齐字节而报错。全部计算在本机完成,输入内容不会发送到任何服务器,可放心粘贴隐私文本。按字节分组查看能直观看到汉字占三字节、表情符号占四字节,无论是课堂演示计算机如何存储文字、查看某个字符的真实 UTF-8 字节,还是把抓到的位串还原成设备报文,都能即时完成。

误用集中在编码约定上:同一个汉字在 UTF-8 下是三字节、在 GBK 下是两字节,二进制串的长度与内容因此完全不同,编码时与解码时必须使用同一字符集。另一个误用是忽视分隔约定——连续的位串没有分隔符就无从切分,因此要么按固定宽度分组,要么以空格分隔,双方约定不一致时会得到完全错误的还原结果。

用途上要区分「展示」与「传输」:把文本写成二进制便于教学演示与逐位核对,但作为传输编码它非常低效——每个字节要用八位字符表示,体积是原文本的八倍,而十六进制是两倍、Base64 约为一点三三倍。因此实际传输应选择后两者,二进制位串只在需要逐位观察、或与硬件与协议文档逐位对照时才有优势。

若目的只是让人看懂位模式,建议同时给出十六进制形式:位串适合逐位对照,十六进制四位一组更紧凑,两者并排时既便于观察也不至于让版面过长。反过来,若目的是给程序解析,应直接使用字节数组或十六进制字符串,位串需要额外的解析步骤且容易在分组长度的约定上出错。

最后一个前提是可读性成本:二进制位串很长,人工核对时极易把 0 与 1 看错,尤其是连续重复的位。因此核对这类内容应改用分组显示并辅以十六进制对照,或者干脆用校验和确认整段是否一致,而不是逐位比对。把「人工逐位核对」换成「用摘要比对整段」,是这类数据上更可靠的验证方式。

两个方向必须配对使用,这一点比想象中更严格。编码时的分组方式与解码时的不一致,结果就会完全不同:同一串位,按八位一组与按四位一组解读,得到的是两套毫无关系的字符。因此自建流程时应当把编码约定写进文档,并在接收端用一组已知输入做冒烟测试,确认解码器与编码器的约定一致。

作为一种「表示法」,它和十六进制、转义序列解决的是同一类问题——把字节写成可读字符,区别只在紧凑程度与直观程度。选择依据不是哪个更高级,而是哪个更适合当前用途:需要逐位观察用位串,需要紧凑传输用十六进制或编码格式,需要在文本里内嵌二进制用转义或编码。把三者的适用面分清,就不会在传输场景里误用最冗长的那种。

在教学与文档场景里,位串有个不易替代的优势:它能让读者直接看到某个标志位或掩码的作用。协议文档里写「第三位表示某某」,配上位串比配上十六进制更容易对应。因此即使传输上不推荐,作为说明工具它仍然有存在价值,关键是明确它服务于「看懂」而不是「传递」。

处理长文本时要意识到体积会迅速膨胀:每个字节变成八个字符,一段一万个字符的文本会变成八万字符的输出,粘贴与比对都会变得笨重。若只是为了核对,建议只取首尾若干字节;若确实需要完整转换,应导出为文件而不是留在页面上,否则复制过程本身就容易出错。

最后一点与验证方式有关:人工逐位核对位串几乎必然出错,连续重复的零与一尤其难分辨。更可靠的验证是把整段数据的摘要算出来做比对,或先用十六进制确认内容一致再转成位串。把「人眼比对」换成「摘要比对」,是这类数据上最值得养成的一个习惯。

实现原理

转换把每个字符按其编码的字节值写成二进制位串,因此关键在于编码:同一个汉字在 UTF-8 下是三字节、在 GBK 下是两字节,二进制串长度与内容都会不同。反过来解析时必须用与编码时一致的字符集,并按同样的分隔约定切分,否则会得到完全错误的文本。

输入字符 A(UTF-8)
输出01000001(单字节,十进制 65);汉字「中」则是三个字节共 24 位

使用方法

  1. 打开「文本转二进制」
  2. 选择源格式与目标格式
  3. 根据需要调整输出选项
  4. 点击「转换」按钮,结果实时显示
  5. 复制或导出结果

使用场景

  • 教学演示 — 展示一句话如何变成 0/1 序列,直观讲解计算机如何存储文字。
  • 编码核对 — 查看某个字符的 UTF-8 字节,确认编码是否符合预期。
  • 还原数据 — 把抓到的二进制位串转回文字,读取设备传来的内容。
  • 协议调试 — 把测试字符串转成二进制,比对底层传输的位序列。
  • 趣味隐写 — 把短消息编码成 0/1 串,用于谜题或趣味分享。
  • 位级排障 — 把一个字节序列转成二进制,逐位检查协议缓冲区或串口包内容。

常见问题

中文一个字是几位?

在 UTF-8 下一个常见汉字占 3 字节,即 24 位二进制。工具按字符的实际 UTF-8 字节数生成对应位串,不是固定一个字一个字节。

位串之间需要空格分隔吗?

为可读性默认按每 8 位(一个字节)用空格分组。还原时工具会忽略空格,所以带不带空格都能正确解析。

只能用 8 位一组吗?

常规以字节为单位(8 位)。若输入位数不是 8 的倍数,还原时会因无法对齐字节而报错,请检查位串是否完整。

支持表情符号吗?

支持。emoji 在 UTF-8 下通常占 4 字节,工具会按其真实字节展开为 32 位,再正确还原。

和文本转 Unicode 有何不同?

本工具输出的是基于字节的 0/1 位串;若你想看每个字符的码点(如 U+4F60),请用本站的文本转 Unicode 工具。

为什么是 UTF-8 而不是 ASCII?

ASCII 只能表示 128 个基本字符,无法编码中文或 emoji;UTF-8 是 Web 与 JSON 的默认编码,能完整覆盖所有字符,所以工具以 UTF-8 字节为准。

转换结果和网上工具不一样(8 位 vs 变长)?

ASCII/UTF-8 按字节编码,英文字符 1 字节 8 位;中文等非 ASCII 字符在 UTF-8 下是 2–4 字节。有的工具按 Unicode 码点输出 16/32 位定长,有的按 UTF-8 输出变长。确认两边编码一致再比,否则必然不同。

二进制转回文本出现乱码?

多半是编码不一致:用 UTF-8 编码的中文按 ASCII/latin1 解码就会乱码。转换与还原必须用同一编码;复制过程中丢失前导 0(比如被当作数字处理)也会导致按 8 位分组时错位。

广告