a85encode和b85encode有什么区别?

时间:2016-01-23 22:54:31

标签: python python-3.4 base85

Python 3.4添加了a85encodeb85encode函数(及其相应的解码函数)。

两者有什么区别?该文档提到了"它们的区别在于用于编码的字符映射等细节。" ,但这似乎不必要地含糊不清。

2 个答案:

答案 0 :(得分:7)

a85encode使用字符映射:

!"#$%&'()*+,-./0123456789:;<=>?@
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`
abcdefghijklmnopqrstu

z用作表示四个零字节(而不是!!!!!)的特殊情况。

b85encode使用字符映射:

0123456789
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
!#$%&()*+-;<=>?@^_`{|}~

没有特殊缩写。

如果您有选择,我建议您使用a85encode。在C中实现它会更容易(也更有效),因为它的字符映射使用ASCII顺序中的所有字符,并且在存储包含大量零的数据时效率稍高,这对于未压缩的二进制文件来说并不罕见数据

答案 1 :(得分:6)

Ascii85 Base85 的前身;两者之间的主要区别实际上是使用的字符集。

Ascii85使用字符集:

ASCII 33 ("!") to ASCII 117 ("u") 

Base85使用字符集:

0–9, A–Z, a–z, !#$%&()*+-;<=>?@^_`{|}~

这些字符未特别包含在Base85中

"',./:[]\\
分别

a85encode b85encode 编码/解码 Ascii85 Base85