파이썬에서 AES 알고리즘을 구현하려고합니다.이 코드를 구현할 때 ord() 함수에서 오류가 발생했습니다. 파이썬에서 코드를 변환하려고합니다. 2.3에서 python 3. 어떻게하면 오류를 해결할 수 있습니까? 내 코드 라인은 다음과 같습니다 사전에TypeError : length() 예상 길이가 1 인 문자열 (int)
key = map(ord, key)
감사
파이썬에서 AES 알고리즘을 구현하려고합니다.이 코드를 구현할 때 ord() 함수에서 오류가 발생했습니다. 파이썬에서 코드를 변환하려고합니다. 2.3에서 python 3. 어떻게하면 오류를 해결할 수 있습니까? 내 코드 라인은 다음과 같습니다 사전에TypeError : length() 예상 길이가 1 인 문자열 (int)
key = map(ord, key)
감사
핵심 변수는 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)
보다 빠름).
고마워요. 정말 도움이됩니다. –
코드 한 줄뿐 아니라 코드를 추가하십시오. –
'ord'는 문자열을 취해서'int'를 반환합니다. 'ord ('a') -> 97'이고'chr'은 역방향'chr (97) -> 'a'입니다. 어느 쪽을 원하니? –