二进制转文本转换器,免费
在二进制和文本之间即时转换。
二进制表示的简要历史
二进制是计算机的根本语言,每个字符、数字与指令最终都被表示成 0 与 1 的序列,但这个想法比计算机早了 250 年。Gottfried Wilhelm Leibniz 写下了《Explication de l'Arithmétique Binaire》(1703 年呈交法国科学院,1705 年印于《Mémoires》),这是西方对二进制算术的第一份正式描述。Leibniz 部分受到中国《易经》的卦象启发,《易经》将每一个占卜图样编为六行的实线或断线堆叠(实质上就是 6 位二进制)。George Boole 的《An Investigation of the Laws of Thought》(1854)给了二进制其代数基础(AND、OR、NOT、异或),这套基础至今仍是每一个数字电路的根基。Claude Shannon 在 MIT 的硕士论文《A Symbolic Analysis of Relay and Switching Circuits》(1937 年 8 月提交)完成了把布尔代数与电气工程连接起来的关键一跃:每一个继电器与开关组成的电路都对应一个布尔表达式,反之亦然。Shannon 这篇论文被广泛认为是 20 世纪最有影响力的硕士论文。最早的电子计算机是十进制(ENIAC,1945 年,内部用十进制计数器)与二进制(Manchester Baby,1948 年 6 月,首台存储程序的二进制计算机;EDSAC,1949 年 5 月,首台真正实用的)的混合;到了 1950 年代初,二进制已经成了普世默认。
8 位字节出现得更晚。"byte" 这个词由 IBM 的 Werner Buchholz 于 1956 年 6 月在 IBM Stretch 计算机的设计过程中创造,起初有多种宽度(6 位、8 位、9 位)。8 位字节由 IBM 在 1964 年 4 月 7 日发布 System/360 时定为标准;从那以后,业界就把"一个字节"理解为 8 位。(早期文献偶尔会用 "octet" 来明确无歧义,IETF 规范也因此仍然偏好 "octet"。)
字符编码:把字母变成比特
二进制是最底层;再上一层是字符编码,负责把字母与符号映射到具体的比特模式。Baudot 码(Émile Baudot,1870 年发明,1874 年获专利)是第一种被广泛使用的二进制文本编码,每字符 5 位,被电传打字机与 Telex 网络使用了一个多世纪。5 位只能给出 32 个码,因此 Baudot 码不得不使用切换字符(一个用于字母,一个用于数字与标点)来扩展可寻址的字符集。ASCII(美国信息交换标准代码)由 American Standards Association 在 1963 年 6 月 17 日以 ANSI X3.4-1963 的形式发布。ASCII 用 7 位编码 128 个字符:控制码(0-31)、标点与数字(32-64)、大写字母(65-90)、更多标点(91-96)、小写字母(97-122)、末尾标点(123-127)。选择 7 位宽度是为了与纸带电报硬件兼容。在接下来的二十年里,ASCII 是英文世界的主流编码;其规范化修订版 ANSI X3.4-1986 与之实质相同,也就是今天人们说"ASCII"时所指的版本。
扩展 ASCII / ISO 8859 系列(ISO 8859-1 1987 年发布,其余在 1990 年代陆续推出)用各地的字母表填满了 8 位字节中较高的 128 个字符:Latin-1 覆盖西欧语言,Latin-2 覆盖东欧,Latin-5 是土耳其语,Cyrillic-1、Greek-1、Arabic-1、Hebrew-1、Thai-1。这造出了十五种彼此不兼容的 8 位编码:0xE9 在 Latin-1 里是 é,而在 Cyrillic-1 里是别的字符,在严格的 ASCII 里没有定义,在 Mac Roman 里又是另一个字符。这种错位带来了著名的 mojibake(日语:文字化け,"文字蜕变",编码错位造成的看上去乱码的文本)。
Unicode 项目就是对此的回应。Unicode 联盟于 1991 年 1 月 3 日成立;Unicode 1.0 于 1991 年 10 月发布,大约 7,000 个字符。到 Unicode 16.0(2024 年 9 月 10 日发布)时,标准已涵盖 168 种文字下的 154,998 个字符。Unicode 是一个码点系统,为每个字符分配一个唯一的数字标识符,但它本身不是一种二进制编码。Unicode 有多种编码:UTF-32(每字符 4 字节,定长)、UTF-16(2 或 4 字节,变长),以及现代网络上的主流:UTF-8。
UTF-8 由 Ken Thompson 与 Rob Pike 在 1992 年 9 月 2 日左右于新泽西一家小餐馆的餐垫上设计;到 9 月 8 日,Plan 9 已经在它上面运行。UTF-8 是变长的:ASCII 字符(U+0000 到 U+007F)1 字节,U+0080 到 U+07FF 2 字节,U+0800 到 U+FFFF 3 字节,U+10000 到 U+10FFFF 4 字节。每个字节的高位表示它在多字节序列中的位置(0xxxxxxx = 1 字节 ASCII,110xxxxx = 2 字节序列的首字节,10xxxxxx = 续接字节,等等),这让 UTF-8 具备自同步性,你可以从任意位置开始解码,只看后面几个字节就能找到下一个字符的边界。UTF-8 还向后兼容 ASCII:每一个 ASCII 文件都是合法的 UTF-8 文件。截至 2026 年,W3Techs 报告大约 98.9% 的网页声明 UTF-8 为其编码,它毫无悬念地是世界的文本编码。
ASCII 二进制示例
几个有代表性的 ASCII 字符的 8 位二进制形式(因为 ASCII 在技术上是 7 位但按字节对齐,故有领先的 0):
- 'A'(大写 A)= 十进制 65 =
01000001 - 'a'(小写 a)= 十进制 97 =
01100001(注意:与 'A' 恰好差一位,即第 5 位,这正是用 0x20 做异或来切换大小写的原因) - '0'(数字零)= 十进制 48 =
00110000 - '9'(数字九)= 十进制 57 =
00111001 - ' '(空格)= 十进制 32 =
00100000 - '\n'(换行 / line feed)= 十进制 10 =
00001010 - '!'(感叹号)= 十进制 33 =
00100001
"Hello" 在 ASCII 里是 01001000 01100101 01101100 01101100 01101111,五字节,一字节一个字符。在 UTF-8 里完全相同,因为每个 ASCII 字符也是合法的 1 字节 UTF-8 字符。"Café" 在 UTF-8 里是 01000011 01100001 01100110 11000011 10101001,四个字符,但有五字节,因为 é(U+00E9)在 UTF-8 下需要两字节(11000011 10101001)。
UTF-8 多字节编码,从机制上看
UTF-8 的编码规则用特定的高位模式来标示字节位置。1 字节(ASCII 范围 U+0000 到 U+007F):0xxxxxxx,高位为 0,余下 7 位即码点。2 字节(U+0080 到 U+07FF):110xxxxx 10xxxxxx,首字节以 110 开头,续接字节以 10 开头;x 位组合起来给出 11 位的码点。3 字节(U+0800 到 U+FFFF):1110xxxx 10xxxxxx 10xxxxxx,首字节以 1110 开头,两个续接字节;16 位码点。4 字节(U+10000 到 U+10FFFF):11110xxx 10xxxxxx 10xxxxxx 10xxxxxx,覆盖整个 Unicode 空间,包括表情符号。俄文字母 п(U+043F)在 UTF-8 里需要 2 字节(11010000 10111111);汉字 中(U+4E2D)需要 3 字节;表情 🎉(U+1F389)需要 4 字节。把文本编码成 UTF-8 二进制总会得到合法序列;解码时则要检查续接字节是否带有 10 前缀(否则输入就是非法 UTF-8,解码器通常会用替换字符 U+FFFD 来代替坏序列)。
记号约定
二进制文本在野外有几种约定,指向的都是同一组底层字节。以空格分隔的字节:01001000 01100101 01101100 01101100 01101111,可读性最好的形式,在教程与谜题里常见。无空格连续:0100100001100101011011000110110001101111,更紧凑,要求读者知道字节边界每 8 位一个。逗号分隔:01001000,01100101,01101100,01101100,01101111,在 CSV 编码的测试数据里常见。十六进制对(Base16):48 65 6c 6c 6f,同样的字节,改用每个两位十六进制而不是八位二进制;紧凑得多,在面向程序员的工具里很常见(hexdump、十六进制编辑器)。十进制:72 101 108 108 111,即每个字节的整数值。本工具在做"二进制转文本"时接受空格分隔、逗号分隔与连续三种二进制输入;"文本转二进制"则输出空格分隔的 8 位二进制。
常见用途
- 计算机科学教学。二进制表示是 CS101 的根基,学生通过把自己的名字编码再读回来,就理解了什么是"字节"。
- 隐藏信息谜题。密室逃脱、地理寻宝坐标、ARG(替代现实游戏)线索、Capture-the-Flag 题目都常用二进制编码文本作为通用密码,因为它一眼能认出是"二进制",但又要求读者知道转换。
- 隐写术。把信息藏在明面上,做法是把它编码成看起来像噪声的二进制,例如藏在图片最低有效位的数据里,或者藏在邮件行尾的空白里。
- 调试编码问题。当 "Café" 显示成 "Café" 或 "€" 而不是 "€" 时,字节本身就揭示了发生了什么,UTF-8 序列被当成了 Latin-1 来解读,或者反过来。看实际的二进制表示,会让编码错配一目了然。
- 取证分析。从损坏的文件、不完整的备份或受损的存储中恢复文本,常常意味着看原始字节然后手工解码。
- 学习底层编程。位运算、移位、构造掩码,这些一旦能直接看到值的二进制表示,就立刻变得直观。
- 二进制艺术与纹身。作为结婚礼物的二进制 "I love you"、XKCD 风格的二进制 T 恤、二进制数字纹身。纯 0 与 1 的美学有一个虽小但真实的亚文化。
值得了解的编码坑
编码错配引发的 mojibake。同一段字节序列在不同编码下解读会得到不同(并且通常乱掉)的文本。0xE9 在 Latin-1 里是 é,但在 UTF-8 里是一个非法序列的开头(任何 ≥ 0x80 的字节,要么是续接字节,要么是多字节序列的开头)。当 UTF-8 文件被当作 Latin-1 打开,每一个多字节 UTF-8 字符就会变成 2-4 个乱掉的 Latin-1 字符,这就是经典的 "Café" → "Café" 失败模式。BOM(字节序标记)。Unicode 文件最开头的一段 2-3 字节序列,用来标示字节顺序:UTF-16 little-endian 以 FF FE 开头,UTF-16 big-endian 以 FE FF 开头,UTF-8 BOM(很少使用,有时叫"带 BOM 的 UTF-8")则是 EF BB BF。BOM 有助于区分 Unicode 编码,但只有 UTF-16 与 UTF-32 是必须的;IETF 不建议给 UTF-8 文件加 BOM,因为它会破坏那些假设文件以正常内容开头的工具。字节序对 UTF-16 与 UTF-32 重要(它们决定多字节码元的字节顺序),但对 UTF-8 不重要(它是按字节流编码的,顺序由规范决定,而不是由硬件决定)。
ASCII 参考表
隐私:为什么这里也只用浏览器
二进制转换看起来无害,但被转换的文本恰恰属于那种隐私重要的东西:朋友间隐藏信息的谜题、被编码用作隐写实验的机密短语、为排查编码问题而被调试的敏感字符串,或者只是任何读者期待"这段二进制是私密表示"的内容。本工具完全在你浏览器里通过 JavaScript 运行,转换时打开 DevTools 的 Network 标签即可核验,或在加载完成后让页面离线(飞行模式),转换器仍然可用。可放心用于谜题线索、敏感的调试字符串,或任何你不希望被复制到陌生人硬盘上的文本。
常见问题
二进制输入应为什么格式?
输入以空格分隔的 8 位二进制值(例如 「01001000 01101001」)。如果每个字节恰好 8 位,也可以不加空格,或使用逗号分隔。
支持 emoji 或非拉丁字符吗?
文本→二进制方向支持所有 Unicode 字符 · 每个字符会展开为其完整的 UTF-8 二进制表示。对于二进制→文本,每组 8 位会被解码为一个 ASCII 字节(0–255)。
为什么每个字符是 8 位?
每组 8 个二进制位(比特)代表一个字节。ASCII 使用 7 位(0–127),但通常以 8 位显示,前导补 0。一个字节可以表示 256 种不同的值(0–255),覆盖所有标准键盘字符。
二进制究竟从哪里来?
数学上的概念比计算机早了 250 年。Gottfried Wilhelm Leibniz 在 1703 年写下了西方对二进制算术的第一份正式描述(《Explication de l'Arithmétique Binaire》),部分受到中国《易经》卦象的启发。George Boole 的《Laws of Thought》(1854)给了二进制代数基础(AND、OR、NOT)。Claude Shannon 的 MIT 论文(1937)把布尔代数与电气继电器电路连接了起来,这是数字电子学的奠基时刻。第一批电子二进制计算机出现在 1940 年代末(Manchester Baby 1948 年 6 月,EDSAC 1949 年 5 月)。
ASCII 与 UTF-8 有什么区别?
ASCII(1963)是一种 7 位定长编码,覆盖 128 个字符,基本英文字母、数字、常见标点、控制码。UTF-8(Thompson + Pike,1992)是对整个 Unicode 标准的变长编码(到 2024 年 9 月 Unicode 16.0,大约 155,000 个字符)。UTF-8 向后兼容 ASCII:任何合法的 ASCII 字节序列也是合法的 UTF-8。差别从 ASCII 范围之外开始,é、中、🎉 在 UTF-8 里都需要多字节。截至 2026 年,大约 98.9% 的网页声明 UTF-8 为其编码(W3Techs)。
我的转换会被发到哪里吗?
不会。转换完全在你浏览器里通过 JavaScript 运行。你粘贴的文本与二进制都不会过网络,在点击"转换"时打开 DevTools 的 Network 标签即可核验,或者在加载完成后让页面离线(飞行模式),工具仍然能用。