2012-11-07 10 views
10

için bir dize dönüştürme bir dizeyi base64 ve daha sonra base64 kodlanmış bir dize alır ve bir dizeye dönüştürür diğerine dönüştüren bir program yazmaya çalışıyorum. i str böyleceBir dize için ve temel 64

TypeError: expected bytes, not str 

benim kod şimdiye kadar

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

Python-3 unicode dizgisi olduğundan, bayt veri türü tanıtıldı. Dizginizi bir bytearray'e, örneğin 'b = bytes (mystring, 'utf-8')' kullanarak ve sonra kodlama için 'b' kullanarak:' EncodedString = base64.b64encode (b) ', bir bytrayray döndürecektir –

cevap

25

bir dize zaten 'deşifre' olduğu şöyle hata almaya devam olarak
şimdiye kadar ben base64 kodlaması parçası geçmiş olsun olamaz sınıf hayır 'kod çözme' function.Thus vardır:

: bir bayt dizisi deşifre ve bir dize çağrısı çevirmek istiyorsanız

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

Eğer bir dize (bir bayt dizisi çevirmek) kodlamak isterseniz

the_thing.decode(encoding) 

çağırır: tabanının 64 şeyler açısından

the_string.encode(encoding) 

: verim Yukarıdaki kodlama için değer olarak 'base64' kullanma hata:

LookupError: unknown encoding: base64 

aç şu bir konsol ve türü:

import base64 
help(base64) 

base64'ün b64decode ve b64encode olmak üzere iki çok kullanışlı işlevi olduğunu göreceksiniz. b64 kod çözme bir bayt dizisi döndürür ve b64encode bir bayt dizisi gerektirir.

Dizeyi base64 temsiline dönüştürmek için önce onu baytlara dönüştürmeniz gerekir. Ben utf-8'i seviyorum ama ihtiyacınız olan her şeyi kullanın ...

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

def base64ToString(b): 
    return base64.b64decode(b).decode('utf-8') 
İlgili konular