20

文字列をbase64に変換するプログラムと、base64でエンコードされた文字列を取得して文字列に変換するプログラムの2つのプログラムを作成しようとしています。
これまでのところ、エラーが発生し続けるため、base64エンコーディング部分を通過できません

TypeError: expected bytes, not str

私のコードはこれまでのところこのように見えます

def convertToBase64(stringToBeEncoded):
import base64
EncodedString= base64.b64encode(stringToBeEncoded)
return(EncodedString)
4

1 に答える 1

48

文字列はすでに「デコード」されているため、str クラスには「デコード」機能がありません。

AttributeError: type object 'str' has no attribute 'decode'

バイト配列をデコードして文字列呼び出しに変換する場合:

the_thing.decode(encoding)

文字列をエンコードする (バイト配列に変換する) 場合は、次のように呼び出します。

the_string.encode(encoding)

base 64 に関しては、上記のエンコードの値として「base64」を使用すると、次のエラーが発生します。

LookupError: unknown encoding: base64

コンソールを開き、次のように入力します。

import base64
help(base64)

base64 には、b64decode と b64encode という 2 つの非常に便利な関数があることがわかります。b64 デコードはバイト配列を返し、b64encode はバイト配列を必要とします。

文字列を base64 表現に変換するには、まずバイトに変換する必要があります。私はutf-8が好きですが、必要なエンコーディングを使用します...

import base64
def stringToBase64(s):
    return base64.b64encode(s.encode('utf-8'))

def base64ToString(b):
    return base64.b64decode(b).decode('utf-8')
于 2012-11-07T10:29:29.400 に答える