为什么base64编码直接返回字节而不是字符串?

时间:2019-08-15 07:38:45

标签: python base64

import base64
base64.b64encode(b'bytes required')

>>>b'Ynl0ZXMgcmVxdWlyZWQ='

如果我理解正确,base64是个字节<---->字符串表示法。那为什么不直接给我字符串'Ynl0ZXMgcmVxdWlyZWQ='

还是希望我进一步解码?

b'Ynl0ZXMgcmVxdWlyZWQ='.decode('ascii')
b'Ynl0ZXMgcmVxdWlyZWQ='.decode('utf-8')?但是它们会导致相同的结果。

1 个答案:

答案 0 :(得分:2)

您正确的认为base64是二进制数据的文本表示形式。

但是,您忽略了实际实现方面的约束。

import sys

>>> sys.getsizeof("Hello World")
60
>>> sys.getsizeof("Hello World".encode("utf-8"))
44

str对象仅比bytes占用更多的系统资源。当使用更大的base64编码数据主体时,此开销可能导致性能显着下降。

我还怀疑,由于原始的python模块是从python2.7移植的(它没有区分strbytes),所以这可能也只是一个遗留问题。