티스토리 뷰



ctypes.Structure의 subclass에서 _pack_ 멤버에 정렬 단위 바이트값을 넣어주면 된다.
이는 MSVC에서 #pragma pack(n) 와 동일한 효과이다.


>>> class St(Structure) :
	_fields_ = [("a", c_short), ("b", c_int), ("c", c_longdouble)]
          # default 정렬값은 4bytes이다.

# [short:2bytes][empty 2bytes][int:4bytes][long double:8bytes] = 16bytes	
>>> sizeof(St)
16 
>>> class St(Structure) :
	_fields_ = [("a", c_short), ("b", c_int), ("c", c_longdouble)]
	_pack_ = 2 # 2bytes로 변경


# [short:2bytes][int:4bytes][long double:8bytes] = 14bytes	
>>> sizeof(St)
14
댓글