[컴][파이썬] struct.pack / unpack 의 byte alignment 문제

padding 없애기 / 구조체 padding 없애기




간만에 struct.pack 을 사용하게 돼서 고군분투(?)하는데, 뜬금없이 struct.calcsize('3BH') 를 해보니 6 이 나온다.

C compiler 가 선호하는 alignment(preferred alignment of the C compiler) 를 사용하기 때문에 알아서 padding 을 넣어준 것인데, endian 을 지정해 줘야 padding 을 하지 않는다고 한다.[ref. 2 ]

byte alignment 에 관한 내용은 ref. 3 을 참고하자.

여하튼 그래서 '<'(little endian) 을 format 에 넣어줬더니 잘 동작한다.

struct.calcsize('<3BH')



Reference

  1. struct.pack unpack 사용법
  2. Unpacking problem
  3. [컴][프로그래밍] byte alignment

댓글 없음:

댓글 쓰기