全部编码同时生成

输入或粘贴一次文本,即可并排查看二进制、十六进制、Base32 系列、Base58、Base64、Base85 系列、Base91 等编码结果,每个结果都有单独的复制按钮。

完全在浏览器中运行,不会上传任何数据。

使用方法

  1. 在输入框中输入或粘贴文本。
  2. 所有编码随输入实时更新:二进制、八进制、十进制、十六进制、Base32 各变体、Base36 到 Base91,以及 uuencode 和 xxencode。
  3. 对比各项输出,找出最短的编码,或者只包含你能接受的字符的编码。
  4. 点击所需结果旁边的“复制”按钮。

一次输入,查看所有编码

本页的每种编码都会把同样的字节转换成不同的字符组合。把它们放在一起对比,是为项目挑选编码、辨认日志或配置文件中的陌生字符串、了解各格式差异的最快方式。文本按 UTF-8 转成字节后再编码,因此一个带重音的字母占 2 个字节,一个汉字占 3 个字节。所有计算都在浏览器中完成。

  • 逐字节数字。二进制、八进制和十进制把每个字节单独写出,直观易读,但结果很长。
  • 按位分组。十六进制、Base32(含 Base32hex、Crockford、z-base-32)、Base64 和 Base64URL 中每个字符代表固定的位数,所以输出长度只取决于输入长度。
  • 大数转换。Base36、Base58 和 Base62 把整个输入视为一个大整数。输出长度会因数值不同而相差一个字符,开头的零字节会保留为开头的字符。
  • 分块编码。Base45 把 2 个字节变成 3 个字符,Ascii85、Z85 和 Base85 把 4 个字节变成 5 个字符,Base91 则用每两个字符承载 13 或 14 位。
  • 按行编码。uuencode 和 xxencode 是早期电子邮件和 Usenet 使用的格式,按行写出数据,每行开头有一个表示长度的字符。

输出长度对比

下表列出每种编码平均每个输入字节需要多少个字符,以及 32 字节的数据(例如 SHA-256 哈希或 Ed25519 公钥)编码后的长度:

编码每字节字符数32 字节编码后
Base16(十六进制)2.064
Base321.656(不填充时 52)
Base36约 1.5549 或 50
Base451.548
Base58约 1.3743 或 44
Base62约 1.3442 或 43
Base64约 1.3344(不填充时 43)
Base851.2540
Base91约 1.2339 或 40

从十六进制换成 Base64 可以缩短三分之一;再从 Base64 换成 Base91,只能再省大约 8%。

如何选择编码

最短的编码不一定最合适。Ascii85 的输出可能包含引号和反斜杠,Base91 可能包含双引号,放进 JSON、HTML 或命令行时往往需要转义。选择时先想清楚字符串要用在哪里:

  • URL 和文件名:Base64URL、Base58 或 Base62。
  • 需要朗读或手动输入:Crockford Base32 或 Base58,它们去掉了外形相近的字符。
  • 不区分大小写的系统:十六进制、Base32 或 Base36。
  • 二维码:Base45,只使用二维码字母数字模式支持的字符。
  • PDF、Git、ZeroMQ 中的紧凑文本:Ascii85、Base85 或 Z85。
  • 追求最广泛的兼容性:Base64,几乎所有编程语言和平台都支持。

常见问题

哪种编码的输出最短?

在本页的编码中,Base91 最紧凑,每字节约 1.23 个字符;其次是 Ascii85、Z85 和 Base85,每字节 1.25 个字符。Base64 每字节约 1.33 个字符,但支持范围广得多,所以通常是默认选择。

为什么输入长度相同,Base58 和 Base62 的结果长度却不一样?

它们把整个输入当作一个大数来转换,输出长度取决于数值大小,而不只是字节数。开头每多一个零字节,结果也会多一个前导字符。十六进制、Base32 和 Base64 对相同字节数的输入,输出长度总是一样的。

可以在这个页面解码吗?
本页只负责编码。想知道一段陌生字符串用的是什么编码,可以粘贴到编码识别工具;想把字符串从一种编码转成另一种,请使用编码互转工具。
为什么二进制结果这么长?

二进制每个字节要写 8 位数字,再加上分隔符,长度至少是十六进制的四倍。它适合查看具体的每一位,不适合存储或传输数据。

我的文本会被上传到服务器吗?

不会。所有编码都由浏览器中的 JavaScript 计算,文本不会离开你的设备。