관리 메뉴

클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

바이너리 데이터 다루기 - C로 만든 데이터 출력하기 본문

프로그래밍 언어/파이썬

바이너리 데이터 다루기 - C로 만든 데이터 출력하기

huenuri 2024. 10. 5. 20:26

바이너리(이진) 데이터는 두 가지 상태만으로 나타내는 데이터로, 일반적으로 이진법에서는 0과 1로 두 상태를 표현한다. 이번 단원에서는 파이썬에서 C 구조체 바이러리 데이터를 사용하도록 하는 struct 모듈을 알아볼 것이다.


 

 

 

C로 만든 데이터를 출력하려면? - struct

struct는 C 언어로 만든 구조체 이진 데이터를 처리할 때 활용하는 모듈이다. C 구조체로 만들어진 파일을 읽거나 네트워크로 전달되는 C 구조체 이진 바이트를 파이썬에서 처리할 때 주로 사용한다.

다음은 구조체 데이터를 output 파일에 저장하는 C 프로그램으로, save_type은 double형 1개, int형 1개, char형 1개로 이루어진 구조체다.

 

 

이렇게 만들어진 바이너리 구조체 데이터(output 파일)를 파이썬으로 읽어 내용을 확인하려면 어떻게 프로그램을 만들어야 할까?

다음처럼 struct 모듈의 unpack() 함수를 사용하면 C 구조체 데이터를 쉽게 읽을 수 있다.

 

 

unpack() 함수의 첫 번째 인수 'diccc'는 double형 1개, int형 1개, char형 4개를 뜻한다. C 프로그램에서 save_type 구조체도 같은 형태로 이루져 있지만, unpack()은 구조체 전체 길이인 16바이트 크기에 맞게 설정해야 한다.

이 구조체의 길이가 16바이트인 이유는 C 구조체의 특징 때문으로, 가장 큰 double형의 크기 8바이트의 배수로 구조체의 길이가 결정되기 때문이다.

 

 

작성한 파이썬 프로그램을 실행하면 다음과 같은 결과값이 출력된다.

 

 

하지만 이런 오류가 계속 발생해서 코드를 실행하지는 못했다. 

 


 

 

 

학습을 마치고

1시간 넘게 고민하고 연구했지만 이 코드는 실행시키지 못했다. 하지만 오류가 발생하는 걸 두려워해서는 개발자가 될 수 없다. 언젠가 이 문제도 반드시 해결할 수 있으리라 본다.

오늘은 그냥 넘어가려고 한다.