如何Use Ascii85 (Base85) Encoding
编码 binary data using Ascii85, a base-85 scheme that is more compact than Base64 for certain use cases.
问题
你 need 更多 compact 文本 representation 的二进制数据 than Base64 offers, 和你的目标系统 supports larger 字符集合.
前置条件
- Understanding 的 Base64
- 熟悉二进制数据
步骤
-
1. Understand the 5-to-4 ratio
Ascii85 encodes 4 bytes of binary into 5 ASCII characters, using an 85-character alphabet. This is more compact than Base64's 3-to-4 ratio, saving about 7% space.
输入4 bytes → 5 chars输出vs Base64: 3 bytes → 4 chars -
2. Encode the data
Split the input into 4-byte groups, interpret each as a 32-bit big-endian integer, and convert it to base 85 using 5 digits. Map each digit to a character starting from '!' (ASCII 33). Handle the remainder if the input length is not a multiple of 4.
输入test输出5EWac -
3. Decode and verify
Reverse the process: convert each 5-character group back to a 32-bit integer, then split into 4 bytes. Strip the wrapper delimiters (<~ and ~> for Adobe Ascii85) before decoding if present.
输入5EWac输出test
预期结果
compact ASCII 字符串该 decodes 到 exact 原始二进制数据.
常见错误
- Mixing Adobe Ascii85 and standard Ascii85
- Adobe Ascii85 wraps the output in <~ and ~> and uses a special 'z' shorthand for all-zero groups. Know which variant your decoder expects.
- Incorrect remainder handling
- When the input is not a multiple of 4, pad with zero bytes, encode, then truncate the output to the correct length. The decoder must reverse this.
排障指引
- If the decoded data is wrong, check for the Adobe 'z' shorthand which represents 4 zero bytes as a single character.
- Verify the alphabet starts at '!' (ASCII 33), not at '0' or 'A'.
安全限制
- Ascii85 is a reversible encoding with no security properties.