바이트 정렬 2

#005_Window_Network_구조체 멤버 정렬

안녕하세요 삽잡이입니다. 이번 시간에는 구조체 멤버 정렬에 관해 배워보도록 하겠습니다. MSG라는 구조체의 크기는 몇일까요?char 1바이트 int 4바이트 double 8바이트... 총 13바이트가 나오지 않을까요? 하지만, 16바이트가 출력이 됩니다. 제가 계산을 잘못한 것일까요?아닙니다. 16이 나오는 것이 맞다는 것입니다. 그 이유에 대해서 알아보도록 하겠습니다. 자... 그런데 감히 잡히시지 않습니까?저기 저 주석 처리된 메크로가 의심스럽니다. 아무튼...이 문제는 구조체 바이트 정렬에 의해서 생겨난 일입니다. 우선 말씀드리고 싶은 말이 있습니다. '구조체를 함부로 날리지 않는다. 구조체를 함부로 받지 않는다.'만약, 통신하는 다른 PC와 서로 구조체 정렬 방식이 다르다면,연산이 잘못되는 문제가..

#004_Window_Network_바이트 정렬

안녕하세요 삽잡이입니다. 이번 시간에는 바이트 정렬에 대해서 알아보도록 하겠습니다. 우선 바이트 정렬이 뭔지 알아보기 전에 변수 하나를 생성하고 그 안에 값을 채웠다고 해보겠습니다.그러면 데이터는 어떻게 채워질까요?채워지는 방법에는 두가지 방법이 있습니다. int n = 0x1234 라는 값을 초기화 했다고 가정해봅시다. n은 int형 변수로써 4개의 바이트를 가지고 있겠지요...위의 그림과 같이 데이터가 저장됩니다.그런데 왜 두가지가 표현됬을까요? 바로 두 방식이 모두 표준이기 때문입니다. 작은쪽의 주소에 끝값을 보관하고, 큰 쪽 주소에 앞쪽 값을 보관하고 있는 방법.작은쪽의 주소에 앞쪽 값을 보관하고, 큰쪽 주소에 끝 값을 보관하고 있는 방법. 작은 쪽 주소에 끝값을 저장한다고 해서 리틀 엔디안 방식..