import base64
base64.b64encode(b'bytes required')
>>>b'Ynl0ZXMgcmVxdWlyZWQ='
如果我理解正确,base64是个字节<---->字符串表示法。那为什么不直接给我字符串'Ynl0ZXMgcmVxdWlyZWQ='
?
还是希望我进一步解码?
像b'Ynl0ZXMgcmVxdWlyZWQ='.decode('ascii')
或
b'Ynl0ZXMgcmVxdWlyZWQ='.decode('utf-8')
?但是它们会导致相同的结果。
答案 0 :(得分:2)
您正确的认为base64
是二进制数据的文本表示形式。
但是,您忽略了实际实现方面的约束。
import sys
>>> sys.getsizeof("Hello World")
60
>>> sys.getsizeof("Hello World".encode("utf-8"))
44
str
对象仅比bytes
占用更多的系统资源。当使用更大的base64
编码数据主体时,此开销可能导致性能显着下降。
我还怀疑,由于原始的python模块是从python2.7移植的(它没有区分str
和bytes
),所以这可能也只是一个遗留问题。