簡體   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