Base85 编码解码
将文本或十六进制字节编码为 Base85,并可解码还原。支持 PDF/PostScript 的 Ascii85、Python 和 Git 使用的 RFC 1924 字母表,以及 ZeroMQ 的 Z85。
Base85 把每 4 个字节装进 5 个可打印字符,编码后的数据只增加 25%,比 Base64 的 33% 更少。这个工具可以编码文本或原始十六进制字节并解码还原,支持你最可能遇到的三种字母表:PDF 和 PostScript 流中的 Ascii85,Python 的 base64.b85encode 与 Git 二进制补丁使用的 RFC 1924 字母表,以及 ZeroMQ 的 Z85。
使用方法
- 选择编码或解码。
- 选择你正在使用的系统所采用的变体。
- 粘贴要编码的文本或十六进制字节,或要解码的 Base85 字符。
- 使用 Ascii85 时,可按需添加 <~ ~> 分隔符或行长度。
计算公式
N = b₁×256³ + b₂×256² + b₃×256 + b₄ = c₁×85⁴ + c₂×85³ + c₃×85² + c₄×85 + c₅
每 4 个字节为一组,按大端序读成一个 32 位数 N,再改写成 5 个 85 进制数字 c₁ 到 c₅,并映射为字符。Ascii85 给每个数字加 33(所以 "!" 是 0,"u" 是 84),4 个零字节用一个 "z" 表示。末尾剩下 n 个字节(n < 4)时,先补零编码,再截取为 n + 1 个字符;解码时用最大的数字补齐,并丢弃多出来的字节。Z85 没有不完整的分组:输入必须由完整的 4 字节块组成。
示例
文本 "Man " 的字节是 4D 61 6E 20,所以 N = 1,298,230,816。依次除以 85 的幂,得到数字 24、73、80、78 和 61;各加 33 后,对应字符 9、j、q、o 和 ^。因此 Ascii85 把 "Man " 编码为 9jqo^(加上分隔符就是 <~9jqo^~>)。"Hello, World!" 是 13 个字节——三个完整分组外加 1 个字节——编码为 17 个字符 87cURD_*#4DfTZ)+T。
常见问题
我需要哪种 Base85 变体?
PDF 和 PostScript(ASCII85Decode 过滤器)以及 Python 的 a85encode 用 Ascii85;Python 的 b85encode、Mercurial 和 Git 二进制 diff 用 RFC 1924 字母表;ZeroMQ 密钥以及嵌入源代码的字符串用 Z85,因为它的字母表里没有引号和反斜杠。解码时务必使用同一种变体。
Base85 是加密吗?
不是。它是一种没有密钥、可逆的编码,任何人都能解码。它用来让二进制数据通过只能传输文本的渠道。
为什么有些 Z85 库会拒绝我的数据?
ZeroMQ RFC 32 要求字节数能被 4 整除,编码后的长度能被 5 整除。本工具会拒绝不完整的 Z85 分组。任何填充都应由外围协议来定义和去除。
为什么解码结果只显示为十六进制?
压缩流或密钥这类不是有效 UTF-8 的字节无法显示为文本,只有十六进制才有意义。
资料来源
最后更新:
包含这些输入的页面地址: https://kakao.mobile/zh/tools/base85-encoder/
引用此工具
kakaoCalc. (2026, November 8). Base85 编码解码. https://kakao.mobile/zh/tools/base85-encoder/
“Base85 编码解码.” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/base85-encoder/.