12.4.4 其他编码
除了Base64,这个模块还提供了一些函数来处理Base85,Base32和Base16(十六进制)编码数据。
import base64
original_data = b'This is the data,in the clear.'
print('Original:',original_data)
encoded_data = base64.b32encode(original_data)
print('Ebcoded :',encoded_data)
decoded_data = base64.b32decode(encoded_data)
print('Decoded :',decoded_data)
Base32字母表包括ASCII集中的26个大写字母以及数字2到7。
运行结果:
Base16函数处理十六进制字母表。
import base64
original_data = b'This is the data,in the clear.'
print('Original:',original_data)
encoded_data = base64.b16encode(original_data)
print('Ebcoded :',encoded_data)
decoded_data = base64.b16decode(encoded_data)
print('Decoded :',decoded_data)
每次编码位数下降时,采用编码格式的输出就会占用更多空间。
运行结果:
Base85函数使用一个扩展的字母表,与Base64编码使用的字母表相比,在空间上更节省。
import base64
original_data = b'This is the data, in the clear.'
print('Original : {} bytes {!r}'.format(
len(original_data),original_data))
b64_data = base64.b64encode(original_data)
print('b64 Encoded : {} bytes {!r}'.format(
len(b64_data),b64_data))
b85_data = base64.b85encode(original_data)
print('b85 Encoded : {} bytes {!r}'.format(
len(b85_data),b85_data))
a85_data = base64.a85encode(original_data)
print('a85 Encoded : {} bytes {!r}'.format(
len(a85_data),a85_data))
Mercurial,git和PDF文件格式中就使用了很多Base85编码和变种。Python包含两个实现,b85encode()实现了Git Mercurial中使用的版本,a85encode()实现了PDF文件中使用的Ascii85变种版本。
运行结果: