なぜ base64.b64encode() はバイトオブジェクトを返すのでしょうか? 質問する

なぜ base64.b64encode() はバイトオブジェクトを返すのでしょうか? 質問する

の目的は、base64.b64encode()バイナリ データを ASCII 対応の「テキスト」に変換することです。ただし、メソッドはバイト型のオブジェクトを返します。

>>> import base64
>>> base64.b64encode(b'abc')
b'YWJj'

その出力を単に取得するのは簡単ですが、私の質問は、ではなくを返すことdecode()の意味は何ですか?base64.b64encode()bytesstr

ベストアンサー1

b64encode()出力で何をしたいのかを知ることは不可能です。

多くの場合、エンコードされた値をテキストとして扱いたい場合がありますが、ネットワーク経由で送信する場合など、多くの場合、代わりにバイトとして扱いたい場合があります。

は知ることができないためb64encode()、推測を拒否します。また、入力が であるためbytes、出力は暗黙的に に強制変換されるのではなく、同じ型のままになりますstr

ご指摘のとおり、出力をデコードするのはstr簡単です。

base64.b64encode(b'abc').decode('ascii')

...また、結果についても明確に述べます。

余談ですが、base64.b64decode()(注:コード、 ないja 翻訳コード)はstrバージョン3.3以降に受け入れられており、変更はやや物議を醸す

おすすめ記事