파이썬 struct 모듈은 파이썬 값과 C 구조체 간의 변환을 수행할 수 있으며, 이는 파이썬 문자열로 표현됩니다.
파이썬 Struct
- 파이썬 struct 모듈은 파일, 데이터베이스 또는 네트워크 연결 등에 저장된 이진 데이터를 처리하는 데 사용할 수 있습니다.
- 이 모듈은 C 구조체의 레이아웃과 파이썬 값 간의 의도된 변환에 대한 간결한 설명으로 형식 문자열을 사용합니다.
파이썬 Struct 함수
struct 모듈에는 다섯 가지 중요한 함수가 있습니다 – pack()
, unpack()
, calcsize()
, pack_into()
및 unpack_from()
. 이러한 모든 함수에서 변환할 데이터의 형식을 제공해야 합니다. 일부 인기있는 형식 문자는 다음과 같습니다:
?: boolean
h: short
l: long
i: int
f: float
q: long long int
형식 문자의 전체 목록을 여기에서 확인할 수 있습니다. 이제 struct 모듈 함수를 하나씩 살펴보겠습니다.
Python struct.pack()
이 함수는 지정된 유형의 문자열 표현으로 값 목록을 패킹합니다. 인수는 형식이 정확히 요구하는 값과 일치해야합니다. struct pack() 예제를 빠르게 살펴 보겠습니다:
import struct
var = struct.pack('hhl', 5, 10, 15)
print(var)
var = struct.pack('iii', 10, 20, 30)
print(var)
이 스크립트를 실행하면 다음과 같은 표현이 나옵니다: 출력의 ‘b’에 주목하세요.
Python struct.unpack()
이 함수는 패킹된 값을 지정된 형식으로 원래의 표현으로 언패킹합니다. 이 함수는 항상 튜플을 반환합니다. 단일 요소만 있는 경우에도 그렇습니다. struct unpack() 함수 예제를 빠르게 살펴 보겠습니다:
import struct
var = struct.pack('hhl', 5, 10, 15)
print(var)
print(struct.unpack('hhl', var))
이 스크립트를 실행하면 원래의 표현이 반환됩니다: 분명히, 우리는 값들을 언패킹할 형식을 Python 인터프리터에 알려주어야 합니다.
Python struct calcsize()
이 함수는 주어진 형식의 구조체의 문자열 표현의 크기를 계산하고 반환합니다. 크기는 바이트 단위로 계산됩니다. 빠르게 코드 조각을 살펴보겠습니다:
import struct
var = struct.pack('hhl', 5, 10, 15)
print(var)
print("Size of String representation is {}.".format(struct.calcsize('hhl')))
이 스크립트를 실행하면 다음과 같은 표현이 생성됩니다:
Python struct pack_into(), unpack_from()
이 함수들은 값을 문자열 버퍼에 패킹하고 문자열 버퍼에서 언패킹하는 것을 가능하게 합니다. 이러한 함수들은 버전 2.5에서 소개되었습니다.
import struct
# ctypes가 문자열 버퍼를 생성하기 위해 가져옵니다
import ctypes
# 이전 예제에서 보여진 대로
size = struct.calcsize('hhl')
print(size)
# ctypes에서 'buff' 버퍼가 생성됩니다
buff = ctypes.create_string_buffer(siz)
# struct.pack_into()는 데이터를 buff에 패킹하고 어떤 값을 반환하지 않습니다
# struct.unpack_from()은 buff에서 데이터를 언패킹하고 값들의 튜플을 반환합니다
print(struct.pack_into('hhl', buff, 0, 5, 10, 15))
print(struct.unpack_from('hhl', buff, 0))
이 스크립트를 실행하면 다음과 같은 표현이 나옵니다: 이것이 파이썬
struct
모듈의 간단한 소개입니다.
Source:
https://www.digitalocean.com/community/tutorials/python-struct-pack-unpack