0
사용자 지정 인코딩 코드 스 니펫을 작성했습니다. 내가 Pyton 3.6에서 실행할 때 유형 오류가 발생했습니다. 나는 그것을 정확하게 파악할 수 없었다. 코드 스 니펫은 python 2.7에서 잘 작동합니다.유형 파이썬 3.6에서 사용자 지정 인코딩 작업 중 오류가 발생했습니다.
import os
import sys
import base64
def encode(key, clear):
"""encode custom """
enc = []
for i in range(len(clear)):
key_c = key[i % len(key)]
enc_c = chr((ord(clear[i]) + ord(key_c)) % 256)
#change the int or str
enc.append(enc_c)
return base64.urlsafe_b64encode("".join(enc))
clear = "ABCDEFGH"
encode_var = encode("crumbs", clear)
오류 로그 :
(py3) C:\Dev\crumbles>python s1.py
Traceback (most recent call last):
File "s1.py", line 45, in <module>
encode_var = encode("crumbs", clear)
File "s1.py", line 42, in encode
return base64.urlsafe_b64encode("".join(enc))
File "C:\Users\Cookie1\Anaconda3\envs\py3\lib\base64.py", line 118, in urlsafe
_b64encode
return b64encode(s).translate(_urlsafe_encode_translation)
File "C:\Users\Cookie1\Anaconda3\envs\py3\lib\base64.py", line 58, in b64encod
e
encoded = binascii.b2a_base64(s, newline=False)
TypeError: a bytes-like object is required, not 'str'
우리는'join' 바이트를 사용할 수 있습니까? – RottenCandy
예,'bytes.join()'메소드가 있지만, 그것도 다른'bytes' 오브젝트에 참여할 수 있습니다. –
안녕하세요 @MartijnPieters. 귀하의 답변이 도움이됩니다. 그러나 나는 당신이 게시 한 코드를 이해할 수 없다. 간단히 설명해주십시오. –