본문 바로가기
파이썬

파이썬 바이너리파일 쓰기 -#1

by 오징어땅콩2 2021. 10. 3.
반응형

먼저 사족으로 설명 한다면, 파이썬만의 문제는 아니다.

요즘 언어가 표준이 그렇게 가고 있기 떄문이다. 

그렇다고 모든 언어가 표준을 따르면 인생이 괴롭지 않다.

왜 ...? 세상 사람들이 다 그렇게 하게 때문에 별 생각 없이 살아 가도 된다.

그렇지만 세상은 그렇게 만만하지 않다.

표준을 지키는 사람과 지키지 않는 사람으로 나누게 된다.

 

본격적으로 왜 이런 상황이 발생 했는지 않아 보자.

 

struct Person {   // 구조체 정의
    char a;        // 구조체 멤버 1
    int b;       // 구조체 멤버 2
};

 

위와 같이 했을경우, 문자는 1바이트, 정수는 4바이트라고 하자 

그러면 틀림 없이 5바이트가 정답이다.

sizeof()로 계산 하면 5바이트가 아닌경우가 많다.

왜, 표준이 변했기 떄문이다. 그렇다고 항상 5가 아닐까 ? 

표준을 지키지 않는 쪽에서 5바이트다.

 

쉽게 말해서 정렬바이트를 합쳐서 8바이트를 만들어 버린다. 

고정된 크기로 보내면 통신에 유리하기 때문이다.

파일로 만들떄도 비슷한 상황이 발생한다.

 

struct Person {   // 구조체 정의
    int b;       // 구조체 멤버 1
    char a;      // 구조체 멤버 2

};

 

이제 순서를 바꾸어서 보자. 크기가 얼마 일까 ? 

정렬바이트를 합쳐서 8바이트 겠지만 또 아니다. 

정확인 이야기 하면 아닌경우가 많다.

왜, 표준을 그렇게 만들었기 때문이다.

 

댓글