2017-01-25 4 views
0

파이썬에서 AES 알고리즘을 구현하려고합니다.이 코드를 구현할 때 ord() 함수에서 오류가 발생했습니다. 파이썬에서 코드를 변환하려고합니다. 2.3에서 python 3. 어떻게하면 오류를 해결할 수 있습니까? 내 코드 라인은 다음과 같습니다 사전에TypeError : length() 예상 길이가 1 인 문자열 (int)

key = map(ord, key) 

감사

+0

코드 한 줄뿐 아니라 코드를 추가하십시오. –

+0

'ord'는 문자열을 취해서'int'를 반환합니다. 'ord ('a') -> 97'이고'chr'은 역방향'chr (97) -> 'a'입니다. 어느 쪽을 원하니? –

답변

0

핵심 변수는 bytes 객체 (Py2에서 str) 이미 있습니다. Py2에서 str은 길이가 1 str 인 시퀀스이므로 int 시퀀스로 변환하려면 ord이 필요합니다.

Py3에서, bytes의 객체는의 시퀀스이며 0부터 255까지입니다. 기본적으로 Python 2에서 str을) int으로 변환하려면 map(ord, key)이 필요합니다. 파이썬 3에서는 시퀀스를 변경해야하는 경우가 아니면 변환을 수행 할 필요가 없습니다. 원래 bytes의 변경 가능한 복사본을 만들려면 bytearray(key)을 수행하면됩니다.

Py2.6 +는 bytearray 유형이하고 Py3 (int s의 가변 순서입니다)에서와 같이이 동일하게 동작합니다, 그래서 당신은 가능성이 단지 사방 bytearray(key)를 사용하여 2/3 휴대용 코드를 작성할 수 있습니다 (그리고 부팅하려면 map(ord, key)보다 빠름).

+0

고마워요. 정말 도움이됩니다. –

관련 문제