文本转二进制转换器

→
文本 → UTF-8 字节 → 每字节 8 位二进制,以空格分隔

文本转二进制:一个字符串在字节层面长什么样

这个换算在做什么

它先用 UTF-8 把文本编码成字节,再把每个字节写成八位二进制。这里没有算术——字符只是查表写出——但结果就是这段字符串真正会被存储或传输的那一串 1 和 0。

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

ASCII 只定义了 128 个字符,够英文用,其他文字一概没有。UTF-8 把前 128 个编码保持不变,其余字符摊到两、三或四个字节上,所以英文串产生的字节和 ASCII 完全一样,而中文和 emoji 也能正常工作。这就是为什么字母 A 只占一个字节,而一个汉字要占三个。

文本转二进制对照表

短字符串及其二进制字节序列。多字节的那几行最有意思:它们展示了一个字符如何变成一组字节,每个字节都带着可以辨认的前导位模式。

文本二进制
A01000001
Hi01001000 01101001
OK01001111 01001011
12300110001 00110010 00110011
!00100001
Go01000111 01101111

那个你没料到的字节

文本处理中最常见的意外,是字符串比看上去更长。五个字符可能是五个字节也可能是十五个字节,取决于所用文字,任何以字符计的限长都会被以字节计的限长打破。看到字节序列就具体了:多字节字符里每个字节的前导位都在宣告这个字符一共占几个字节。

字节数和字符数是两回事

当数据库字段、接口限制或协议头以字节计时,请数字节而不是数字符。转换器直接显示字节序列,所以有几组就是几个字节,而那正是这些限制实际检查的那个数字。

常见问题

文本是怎么变成二进制的?

每个字符先在 UTF-8 编码表里查出对应的字节值,再把这个字节写成八位二进制。字母 A 是字节 65,也就是 01000001;因为它落在最初的 ASCII 范围内,所以只占一个字节。

为什么一个汉字不止一个字节?

因为 UTF-8 要覆盖远超 256 个字符,前 128 个之外的字符就得摊到两、三或四个字节上。一个汉字通常占三个字节,所以在这里显示为三组八位数字而不是一组。

这和 ASCII 是一回事吗?

对纯英文文本来说是的——UTF-8 的设计保证了前 128 个编码与 ASCII 逐字节相同,所以 Hello 在两种编码下完全一样。一旦用上带音标的字母、货币符号或任何非拉丁文字,两者就分道扬镳了,那时 ASCII 无能为力,而 UTF-8 依然可用。

为什么字节之间要用空格隔开?

因为连续不断的二进制没法读,还容易数错,而以空格分隔的八位一组能直接显示字节边界。解码时输入里的空格会被忽略,所以从这里复制出去的序列可以原样粘回反向工具,不必再编辑。

emoji 也能处理吗?

可以。emoji 落在三个字节能到达的范围之上,所以 UTF-8 里多数 emoji 用四个字节编码,在这里就显示为四组八位数字。一个 emoji 编码之后,可能比一个很短的英文单词还长。

复制下面的代码并粘贴到您的网站,即可添加此换算器。

<!-- 文本转二进制 -->
<iframe src="https://unitflow.net/zh/embed/text-to-binary" title="文本转二进制" width="100%" height="420" loading="lazy" style="border:0;max-width:100%;display:block"></iframe>
<p><a href="https://unitflow.net/zh/text-to-binary" target="_blank" rel="noopener">由 UnitFlow 提供</a></p>