728x90
반응형
문제점 및 증상
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'))
'프로그래밍 > Python' 카테고리의 다른 글
[python] dict 객체 복사의 세 가지 방법 : 참조 복사, 얕은 복사, 깊은 복사 (0) | 2024.06.26 |
---|---|
[python] 명령줄 인자 분석 - argparse.ArgumentParser (0) | 2024.06.20 |
[python] TypeError: argument 'data': 'memoryview' object cannot be converted to 'PyBytes' (0) | 2024.06.19 |
[python] LM73 TI 온도센서에서 온도값 읽어오기 (0) | 2024.06.10 |
[opencv] 종횡비 고정하여 이미지 크기 조정하기 (0) | 2024.06.01 |