1차원 컴퓨터 메모리 공간에 여러 개의 연속된 데이터를 배열하는 방법. 빅 엔디언(Big Endian)과 리틀 엔디언(Little Endian)이 있다.
Big Endian
큰 단위가 낮은 메모리 주소에 배열되는 방법
숫자 비교에 유리
디버깅에 유리
사람이 읽는 순서와 동일하게 메모리에 저장되므로 쉽게 디버깅 가능하다.
네트워크 바이트 오더에서 사용
TCP, UDP, IP 같은 많은 프로토콜에서 Big Endian 방식을 흔하게 사용한다.
Little Endian
낮은 단위가 낮은 메모리 주소에 배열되는 방법
연산에 유리
올림수가 있는 경우 낮은 단위부터 계산하는 것이 유리한데 Little Endian 방식이 낮은 수부터 배열되어 있으므로 Big Endian보다 유리하다.
타입 변환에 유리
Little Endian 방식은 시작 주소에 값이 들어가 있어 int16을 int8로 형 변환 하려고 할 때, 앞에서부터 1byte만 자르면 된다. 하지만 Big Endian 방식은 2byte를 읽고 뒤에서 1byte를 잘라내야 된다. 때문에 Little Endian 방식이 타입 변환에 유리하다.
서로 다른 시스템에서 다른 Byte Ordering 방식을 사용하여 통신하면 문제가 생기므로 메모리를 같은 Byte Ordering 방식으로 변환하거나 각 시스템에 맞는 방식으로 변환하는 작업이 필요하다.
ex) 네트워크 바이트 오더링으로 변환
htons(Host to Network Short) : short 메모리 값을 host byte ordering에서 network byte ordering으로 변환
ex) 시스템 사용하는 바이트 오더링으로 변환
ntohs(Network to Host Short) : short 메모리 값을 network byte ordering에서 host byte ordering으로 변환
댓글 영역