繁体   English   中英

Base64解码

[英]Base64 decoding

我正在尝试解码base 64中的一些文本,我不明白为什么我在尝试这样做时出错:

b'Zm9v'.decode('base64_codec')

引发的异常是: TypeError: expected bytes, not memoryview

PS:我知道有一个使用base64模块的替代方案。 但出于好奇,我有兴趣知道答案。

谢谢!

不幸的是, bytes.decode()str.encode()方法(正确地)只支持也在类型之间转换的编解码器; bytes.decode()必须始终返回一个str对象,而str.encode()必须返回bytes ; 看看介绍这些编解码器原始问题

编解码器可以使用任意类型,只是unicode和bytes对象上的辅助方法只支持Python 3.x中的一种类型组合。

因此,您看到的具体错误是由bytes.decode()方法总是希望返回str类型的值引起的。 类似地, str.encode()方法在不返回bytes作为返回值的编解码器上运行:

>>> 'Ceasar'.encode('rot_13')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: encoder did not return a bytes object (type=str)

因此,对于字节到字节和str到str的编解码器,您需要直接使用codecs模块:

import codecs

codecs.getdecoder('base64_codec')(b'Zm9v')[0]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM