ZH
我的工具

Base85 编码解码

将文本或十六进制字节编码为 Base85,并可解码还原。支持 PDF/PostScript 的 Ascii85、Python 和 Git 使用的 RFC 1924 字母表,以及 ZeroMQ 的 Z85。

方向
编码时输入文本或十六进制字节;解码时输入 Base85 字符(空格和换行会被忽略)。
0 表示不换行。PostScript 文件通常使用 75 或 80。
编码结果
87cURD_*#4DfTZ)+T
输入字节数
13
输出字符数
17
不含分隔符和换行
我的工具 →
广告

Base85 把每 4 个字节装进 5 个可打印字符,编码后的数据只增加 25%,比 Base64 的 33% 更少。这个工具可以编码文本或原始十六进制字节并解码还原,支持你最可能遇到的三种字母表:PDF 和 PostScript 流中的 Ascii85,Python 的 base64.b85encode 与 Git 二进制补丁使用的 RFC 1924 字母表,以及 ZeroMQ 的 Z85。

使用方法

  1. 选择编码或解码。
  2. 选择你正在使用的系统所采用的变体。
  3. 粘贴要编码的文本或十六进制字节,或要解码的 Base85 字符。
  4. 使用 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 的字节无法显示为文本,只有十六进制才有意义。

资料来源

最后更新:

引用此工具
APA

kakaoCalc. (2026, November 8). Base85 编码解码. https://kakao.mobile/zh/tools/base85-encoder/

MLA

“Base85 编码解码.” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/base85-encoder/.

广告