__attribute__((packed))
-
C언어에서 struct 정의 그대로 이진 데이터로 만들기Programmer/Programming 2017. 1. 13. 15:15
C의 struct를 이진 데이터로 저장하고 불러오는데 원하는대로 되지 않을 때가 있다. 예를 들어, 2 바이트 이후에 적혀야 하는데 4바이트 뒤에 위치하는 경우이다. 예상한 이진 데이터의 구조: 실제 이진 데이터의 구조 (목표 머신-target machine-을 64 bits로 컴파일한 경우): 이는 데이터 구조체 정렬(data structure alignment) 때문에 발생한다. 데이타 구조체 정렬이란 해당 머신의 읽고 쓰는 단위 크기의 배수로 데이타를 할당하는 것을 말한다. 데이터가 이 배수값보다 작으면 데이터 구조체 패딩(data structure padding)을 해준다. 현대의 컴퓨터는 성능을 높이기 위해서 이런 방식을 기본으로 사용한다. 따라서, 프로그래머가 정확한 이진 데이터를 생성하려면 ..