假设您有一个以Base64编码的MD5哈希值。然后,每个字符在结果为22字节的字符串中只需要6位来存储(不包括结尾的“==”)。因此,每个Base64 MD5哈希可以缩小到6 * 22 = 132位,与原始的8 * 22 = 176位字符串相比,需要少25%的内存空间。
是否有任何Python模块或函数可以让您按上述方式存储Base64数据?
是否有任何Python模块或函数可以让您按上述方式存储Base64数据?
只需将Base64数据解码为二进制:
>>> b64 = "COIC09jwcwjiciOEIWIUNIUNE9832iun"
>>> len(b64)
32
>>> b = b64.decode("base64")
>>> b
'\x08\xe2\x02\xd3\xd8\xf0s\x08\xe2r#\x84!b\x144\x85\r\x13\xdf7\xda+\xa7'
>>> len(b)
24
"存储base64数据"
不要这样做。
不要。绝对不要。存储。Base64。数据。
Base64是通过编码某些内容来使其变大。
存储原始的内容。永远不要存储内容的Base64编码。
David 给出了一个适用于所有 base64 字符串的答案。
只需在 base64 模块中使用
base64.decodestring。也就是说,
import base64 binary = base64.decodestring(base64_string)
是原始 base64 字符串的更节省内存的表示。如果您正在截断 base64 md5 中的尾随 '==',请像这样使用它
base64.decodestring(md5+'==')