오브젝트를 1과 0의 문자열로 변환하려고이 파이썬 코드를 작성했지만 데이터를 파이핑 해제 할 수 없기 때문에 디코딩이 실패합니다. 이 코드입니다 : 나는 몇 가지 문제가 있다고 생각파이썬 인코딩 함수를 디코딩 할 수 없습니다.
def encode(obj):
'convert an object to ones and zeros'
def tobin(str):
rstr = ''
for f in str:
if f == "0": rstr += "0000"
elif f == "1": rstr += "0001"
elif f == "2": rstr += "0010"
elif f == "3": rstr += "0100"
elif f == "4": rstr += "1000"
elif f == "5": rstr += "1001"
elif f == "6": rstr += "1010"
elif f == "7": rstr += "1100"
elif f == "8": rstr += "1101"
elif f == "9": rstr += "1110"
else: rstr += f
return rstr
import pickle, StringIO
f = StringIO.StringIO()
pickle.dump(obj, f)
data = f.getvalue()
import base64
return tobin(base64.b16encode(base64.b16encode(data)))
def decode(data):
def unbin(data):
rstr = ''
for f in data:
if f == "0000": rstr += "0"
elif f == "0001": rstr += "1"
elif f == "0010": rstr += "2"
elif f == "0100": rstr += "3"
elif f == "1000": rstr += "4"
elif f == "1001": rstr += "5"
elif f == "1010": rstr += "6"
elif f == "1100": rstr += "7"
elif f == "1101": rstr += "8"
elif f == "1110": rstr += "9"
return rstr
import base64
ndata = base64.b16decode(base64.b16decode(unbin(data)))
import pickle, StringIO
f = StringIO.StringIO(ndata)
obj = pickle.load(f)
return obj
파이썬에는'bin()'함수가 내장되어 있습니다. –
바이너리 문자열 변환이 다소 엉망입니다 (예 : 0100 <-> 3) –
@Tim Pietzcker :'tobin'은 이진 변환을 수행하지 않습니다. – jdmichal