2012-11-07 4 views
10

문자열을 base64로 변환 한 프로그램과 base64로 인코딩 된 문자열을 변환하여 문자열로 변환하는 두 프로그램을 작성하려고합니다. 내가 STR 따라서,문자열을 Base 64로 변환

TypeError: expected bytes, not str 

내 코드는 지금까지

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

파이썬 -3에는 유니 코드 문자열이 있기 때문에 바이트 데이터 유형이 도입되었습니다. 문자열을 bytearray로 변환해야합니다 (예 : 인코딩을 위해'b = bytes (mystring, 'utf-8')'을 사용하고 나서'b'를 사용함으로써 : Bytearray를 반환 할'EncodedString = base64.b64encode (b)' –

답변

25

문자열이 이미 '해독'는이처럼 보이는 오류가 계속으로
지금까지 내가 base64로 인코딩 부분 과거를 얻을 질수 클래스에는 '해독'function.Thus가 없습니다 :

을 : 당신이 바이트 배열을 디코딩하고 문자열 호출로 돌려하려면

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

당신이 문자열 (바이트 배열로 돌려)를 인코딩 할 경우

the_thing.decode(encoding) 

전화 : 기본 64 재료의 측면에서

the_string.encode(encoding) 

: 를 얻을 수 위의 인코딩에 대한 값으로 '베이스 64'을 사용하여 오류 :

LookupError: unknown encoding: base64 

를 열고 다음 콘솔 입력 :

import base64 
help(base64) 

base64에는 두 가지 매우 편리한 기능, 즉 b64decode와 b64encode가 있습니다. 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') 
관련 문제