2012-11-07 9 views
10

文字列をbase64に変換するプログラムと、base64でエンコードされた文字列を変換して文字列に変換するプログラムを作成しようとしています。私はstrのように、Base64との間で文字列を変換する

TypeError: expected bytes, not str 

は私のコードは、これまで

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

python-3にはUnicode文字列があるため、バイトデータ型が導入されました。文字列をbytearrayに変換する必要があります。エンコーディングに 'b = bytes(mystring、 'utf-8')'を使用し、次に 'b'をエンコーディングに使用して、' EncodedString = base64.b64encode(b) '、bytearray –

答えて

25

文字列がすでに「復号」され、このようなエラーを得続けるよう
これまでのところ私は、base64エンコードの一部を乗り越えるカントクラスには「復号」function.Thusを持っていない:

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

あなたはバイト配列を復号化し、文字列の呼び出しにそれを有効にする場合:

the_thing.decode(encoding) 

あなたは、文字列(バイト配列にそれを回す)コールエンコードしたい場合は、次の利回り上記のエンコーディングの値として「BASE64」を使用して :ベース64のものの面では

the_string.encode(encoding) 

をエラー:以下で

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') 
関連する問題