Endian이란?
Endian에 대해 학습한 내용입니다.
Endian
Endian이란?
정의
→ 엔디언(Endian)이란, 바이트 저장 순서를 의미합니다. 쉽게 설명하자면 우리가 흔히 사용하는 순서의 숫자는 빅 엔디언(big endian)이라고 하며, 이것의 반대는 리틀 엔디언(little endian)입니다.
빅 엔디언(big endian)
→ 우리가 주로 메모리를 읽을 때 사용하는 방식입니다. 왼쪽부터 수를 읽는 것이 특징이죠. 예를 들어, 0x12345678이라는 DWORD 값이 있을 때, 빅 엔디언 방식으로 해당 값을 읽을 경우
12 34 56 78
로 읽을 수 있습니다.
빅 엔디안 형식은 파일이나 시리얼로부터 데이터를 스트리밍할 때나 네트워크 스트리밍을 할 때 이점이 발생합니다.
리틀 엔디언(little endian)
→ 다음은 리틀 엔디언 방식으로 빅 엔디언 방식과 반대로 오른쪽부터 읽어나갑니다. 위와 같은 예시로 0x12345678이라는 DWORD 값을 리틀 엔디언으로 읽게 된다면,
78 56 34 12
가 된다. 오른쪽부터 읽으나 Byte 단위 저장 순서이기 때문에 오른쪽 Byte부터 읽은 것이므로 Byte 내부의 순서가 역순이 되진 않습니다.
리틀 엔디언 방식은 Intel CPU에서 채택한 방법이고 포인터 컨트롤 속도와도 연관이 있습니다. 리틀 엔디언은 BYTE, WORD, DWORD 중 어느 타입으로 읽히는지에 관계없이 읽은 주소가 고정된다는 점이 있습니다. 리버스 엔지니어링을 할 경우, 대부분의 2바이트 또는 4바이트 값은 리틀 엔디언을 사용한다고 생각하시면 됩니다.