> 编码 | 解码 | ascii85 <

// Base85(ASCII85)编码用于高效二进制数据表示

[高效]

高效率

比Base64更高效,相同数据产生约25%更小的输出。

[安全]

本地处理

所有转换都在您的浏览器中进行。您的数据永远不会离开您的设备。

[标准]

Adobe标准

使用标准ASCII85格式,带<~ ~>分隔符,与PostScript兼容。

>> 技术信息

Base85工作原理:

Base85使用85个可打印ASCII字符编码二进制数据。每4个字节编码为5个字符,使其比Base64更高效。

示例:

"你好" → <~87cURD]i~>

为什么使用Base85:

  • >比Base64更高效(约小25%)
  • >PostScript和PDF文件标准
  • >良好的压缩比
  • >仅使用可打印ASCII字符
  • >包含零字节的特殊'z'快捷方式

>> 常见问题

什么是Base85编码?

Base85,也称为ASCII85,是一种二进制到文本的编码方案,使用85个可打印ASCII字符来表示二进制数据,比Base64更高效。

为什么Base85比Base64更高效?

Base85将4字节编码为5字符(80%效率),而Base64将3字节编码为4字符(75%效率),使Base85大约提高25%的空间效率。

<~ ~>分隔符是什么?

<~和~>分隔符是Adobe ASCII85标准的一部分,标记编码数据的开始和结束。它们有助于在文档中识别Base85内容。

'z'字符代表什么?

'z'字符是ASCII85中的特殊快捷方式,表示四个连续的零字节(\x00\x00\x00\x00),使编码更高效。

// 速查表

输入ASCII85Base64
Man 9jqo^TWFuIA==
sure.F*2M7/cc3VyZS4=
Hello87cURDZSGVsbG8=
\0\0\0\0zAAAAAA==

// 代码示例

Adobe     <~87cURDZ~>            (PostScript / PDF, z = four zero bytes)
Python    base64.a85encode(b'Hello')  ->  b'87cURDZ'
          base64.b85encode(b'Hello')  ->  b'NM&qnZv'   (RFC 1924 / Git alphabet)
Z85       ZeroMQ, safe to embed in source strings
Size      4 bytes -> 5 chars  (Base64: 4 bytes -> 5.33 chars)

>> 更多问题

问:ASCII85、Base85 和 Z85 有什么区别?

答:三者数学原理相同(4 字节 → 5 字符),字母表不同:ASCII85(Adobe,用于 PDF/PostScript)使用 ! 到 u,以 <~ … ~> 包裹,并用 z 表示 4 个零字节;Base85(RFC 1924、Git)使用另一套字母表;Z85(ZeroMQ)的字母表便于安全嵌入源码。

问:Base85 与 Base64 相比体积如何?

答:4 字节恰好得到 5 个字符,而 Base64 约为 5.33 个。开销从 33% 降到 25%,相同数据的字符数约少 25%。

问:Base85 对 URL 安全吗?

答:不安全。ASCII85 含有 & , ; ' " < > 等在 URL、HTML 或 shell 中需要转义的字符。URL 请用 Base64url,源码嵌入更适合 Z85。