2016-10-29 7 views
-1

Im mit dem folgenden Problem zu kämpfen:Python-String mit binären Daten base64 kodieren gibt Typeerror

Ich habe ein Array mit den folgenden Binärdaten (nach Verschlüsselung):

data = '\x03×ÿ\x7f*J\x9aÖ¯AÀM|ü{R2+M°ø2\x83.\[email protected]µ³U¡VT' 

Ich möchte base64 es kodieren .

Wenn ich

tun
binascii.b2a_base64(data) 

Ich erhalte TypeError: a bytes-like object is required, not 'str'

Ich brauche dringend einen Rat, wie man mit dieser Art von Daten zu bewältigen. Bitte helfen Sie!

Update: i-Datentyp festgelegt, natürlich - meine Frage an die einzelnen String

+0

Sie können eine Liste nicht an 'b2a_base64()' übergeben, und die Ausnahme zeigt stattdessen, dass Sie in einer Zeichenfolge übergeben wurden. hast du vielleicht 'binascii.b2a_base64 (array [0])' '? –

Antwort

0

Sie haben keine binären Daten verknüpft ist, haben Sie Text-Strings.

Konvertieren Sie den Text zuerst in Bytes; Sie können dies durch Kodieren tun. Es sieht, als ob Sie Unicode-Codepunkte erzeugt, die Eins-zu-eins mit Latin-1 Byte entsprechen, so könnte man zu diesem Codec kodieren:

for value in array: 
    bytes_value = value.encode('latin-1') 
    base64_encoded = binascii.b2a_base64(bytes_value) 

jedoch, welche Codierung geeignet ist für Ihren Text auf dem abhängig wie es in erster Linie produziert wurde. Wenn Sie verschlüsseln, möchten Sie möglicherweise Ihren Verschlüsselungscode so anpassen, dass er nicht direkt Text, sondern Bytes erzeugt.

Verwandte Themen