Qt와 Socket Library를 이용하여 패킷 테스트 프로그램을 만드는 과정에서 컴퓨터 시스템에서 데이터의 저장 방식이 중요하다는 것을 알게 되었다. 빅 엔디안(Big-Endian)과 리틀 엔디안(Little-Endian)은 데이터를 메모리에 저장하는 방식이다. 이 글에서는 두 가지 저장 방식에 대해서 정리하겠다.
Endian(엔디안)은 컴퓨터 시스템이 데이터의 바이트 순서를 저장하고 해석하는 방법을 나타낸다. Endian은 주로 다중 바이트로 이루어진 데이터의 저장 방식과 관련이 있다.
가장 중요한 바이트(MSB, Most Significant Byte)를 가장 낮은 메모리 주소에 저장하는 방식이다.
가장 중요한 바이트(MSB)와 가장 덜 중요한 바이트(LSB)
- 가장 중요한 바이트(MSB, Most Significant Byte) : 다중 바이트 값에서 가장 상위 비트를 포함하는 바이트로 값의 대부분을 결정한다. 일반적으로 높은 자리의 값을 나타낸다.
- 가장 덜 중요한 바이트(LSB, Least Significant Byte) : 다중 바이트 값에서 가장 하위 비트를 포함하는 바이트로 값의 가장 작은 부분을 결정한다. 일반적으로 낮은 자리의 값을 나타낸다.
예를 들어, 16진수0x12345678일 경우,12가 MSB이고78이 LSB이다.
예를 들어, 32 Bit 정수 0x12345678을 Big-Endian 방식으로 저장하면, 메모리에는 다음과 같이 저장된다.
가장 중요한 바이트(MSB, Most Significant Byte)를 가장 높은 메모리 주소에 저장하고 가장 덜 중요한 바이트(LSB, Least Signigicant Byte)를 가장 낮은 메모리 주소에 저장하는 방식이다.
예를 들어, 32 Bit 정수 0x12345678을 Little-Endian 방식으로 저장하면, 메모리에는 다음과 같이 저장된다.
빅엔디안(Big-endian)과 리틀엔디안(Little-endian) 이해하기 : https://riptutorial.com/posix/example/22276/socket-basics