使用方法
- 选择“格式”,并在“模式”中选择“编码”或“解码”。
- 在“文本”中输入内容,结果会随输入即时显示。
- 阅读“检查”。若提示文本无效,请改正它指出的字符;若有效,则复制“结果”。
五种格式
每种格式都用一组固定的可打印字符来表示二进制数据。它们使用的字符数不同,输出比输入长多少也不同。
- Base32(RFC 4648 第6节)使用 A 至 Z 和2至7。每个字符承载五位,八个字符表示五个字节,文本用 = 补足到八的倍数。
- Base32hex(RFC 4648 第7节)使用0至9和 A 至 V。它保留了数据的排序,而 Base32 做不到。
- Base58 使用比特币字母表,不含0、O、I 和 l,以免相似的字符被混淆。每个前导零字节变为一个1,且没有填充。
- Ascii85 把四个字节写成五个 ! 至 u 之间的字符,比数据长约四分之一。四个零字节写作 z。
- Z85 是为源代码设计的 Ascii85 版本:四个字节变为85个字符字母表中的五个字符,这些字符在字符串中是安全的。其数据必须是四个字节的倍数。
文本与字节
文本按其 UTF-8 字节(RFC 3629)编码,因此带重音的字母(如 ğ)占两个字节,表情符号占四个字节。解码把字节还原为文本。若解码得到的字节不是有效的 UTF-8,例如文件或密钥,页面会改以十六进制显示,因此没有任何字节丢失。
解码接受什么,拒绝什么
RFC 4648 第3.3节规定,解码器必须拒绝字母表之外的字符。本页也是如此,因此 Base32 不接受小写字母。它忽略空格和换行,因为它们来自复制粘贴。Base32 的填充是可选的。第3.5节允许解码器这样做:若 Base32 文本的最后一个字符所含的填充位不为零,本页也会拒绝。
计算示例:Base32 编码 foobar
文本 foobar 为六个字节。Base32 把它写成16个字符,即 MZXW6YTBOI 加六个 = 号,这与 RFC 4648 第10节给出的 BASE32("foobar") 结果一致。
下表是模式为“编码”时,本页对 foobar 以 Base32 显示的结果。
| 项目 | foobar 的值 |
|---|---|
| 检查 | 已编码为 Base32。 |
| 结果 | MZXW6YTBOI====== |
| 字节数 | 6 |
| 字符数 | 16 |
常见问题
Base32 是一种加密吗?
不是。Base32 只是用另一套字母表写出同样的字节。任何人都无需密钥即可解码,因此它不隐藏任何内容,不应用来保护数据。
为什么 Base58 不含0、O、I 和 l?
本页所用的比特币字母表去掉了许多字体中容易混淆的字符,因此手工抄写的数值较不容易被误读。该字母表可在比特币核心的源代码中找到。
为什么我的 Z85 文本被拒绝?
Z85 每次编码四个字节,因此数据必须是四个字节的倍数。解码时,文本必须是五个字符的倍数,并且每个字符都须在 Z85 字母表中。缺少或多出一个字符通常是原因。
为什么显示的是十六进制而不是文本?
解码得到的字节不是有效的 UTF-8 文本。如果把它们当作文本显示,会丢失或改变一些字节,因此页面会以十六进制显示每一个字节。
Ascii85 与 Base85 是一回事吗?
Ascii85 是 base 85 的一个版本,使用 ! 至 u 的字符和 z 的简写。Z85 是另一种由 Ascii85 衍生的 base 85,它使用在源代码中安全的不同字母表。
我输入的文本会被发送到别处吗?
不会。编码和解码都在您的浏览器中进行,您输入的任何内容都不会发送到我们的服务器,也不会保存在那里。
资料来源
- RFC 4648:Base16、Base32 与 Base64 数据编码(英文)
- RFC 3629:UTF-8,ISO 10646 的一种转换格式(英文)
- Z85:ZeroMQ RFC 32,Z85 编码(英文)
- 比特币核心源代码 src/base58.cpp(Base58 字母表)(英文)
- 维基百科:Ascii85 条目(Ascii85 编码)(英文)
数据和文字最近核对于2026年11月10日星期二。