프로그래밍/Python
[python] struct.error: char format requires a bytes object of length 1
채윤아빠
2024. 6. 22. 22:37
문제점 및 증상
struct.pack() 함수를 bytes 데이터 생성 중, "c"로 한 문자를 입력받아 처리하는 과정에서 다음과 같은 오류가 발생하였습니다.
pack('>c', 'C')
Traceback (most recent call last):
File "<pyshell#1>", line 1, in
pack('>c', 'C')
struct.error: char format requires a bytes object of length 1
문제 분석
파이썬 2.x 버전에서는 "pack('>c', 'C')"와 같은 코드가 문제가 없었으나, 3.x 버전으로 올라오면서 동일한 문장에 대하여 "struct.error: char format requires a bytes object of length 1" 오류가 발생합니다.
다음과 같은 형식으로 넣으려 해도 모두 동일한 오류가 발생합니다.
pack('>c', 'A')
pack('>c', 'ABC'[1])
pack('>c', 65)
pack('>c', hex(65))
해결 방법
다음과 같이 문자열 (str)이 아닌 bytes 에서 1개 항목값을 전달해 주어야만 합니다.
"c" 문자에 대하여 다음과 같은 형식으로 값을 전달해 주어야만 합니다.
pack('>c', b'A')
pack('>c', b'ABC'[0:1])
pack('>c', 'A'.encode('utf-8'))
pack('>c', bytes('A', 'utf-8'))
728x90
반응형