开发者社区> 问答> 正文

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

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

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

还是期望我进一步解码?

喜欢b'Ynl0ZXMgcmVxdWlyZWQ='.decode('ascii')还是 b'Ynl0ZXMgcmVxdWlyZWQ='.decode('utf-8')?但他们导致了同样的事情。

展开
收起
游客6qcs5bpxssri2 2019-08-28 21:01:46 821 0
1 条回答
写回答
取消 提交回答
  • 你是对的,base64意思是二进制数据的文本表示。

    但是,您忽略了对实际实现方面的限制。

    import sys

    sys.getsizeof("Hello World") 60 sys.getsizeof("Hello World".encode("utf-8")) 44 str对象只占用更多的系统资源bytes。当处理较大的base64编码数据体时,这种开销可能导致性能的非平凡性降低。

    我还怀疑,因为最初的python模块是从python2.7移植的(它没有区分str和bytes),所以这也可能只是一个传统的怪癖。

    2019-08-28 21:02:15
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载