OS/All

[OS] 빅 엔디안 & 리틀 엔디안

0so0 2023. 9. 5. 19:00
728x90
반응형
SMALL

데이터 저장 방식인 빅 엔디안, 리틀 엔디안에 대한 정리

 

CPU 데이터 저장방식(Host Byte Order)

연속된 바이트를 메모리에 저장할때 어떤 순서로 저장할지 정하는것
데이터는 컴퓨터에 Byte 단위로 저장됨

 

빅 엔디안(Big Endian)

상위 바이트 값을 작은 번지수에 저장하는 방식
RISC CPU

 

  • 정수 0x12345678 저장

리틀 엔디안(Little Endian)

상위 바이트 값을 큰 번지수에 저장하는 방식
인텔 CPU

 

  • 정수 0x12345678 저장

 

바이트 순서의 문제

빅 엔디안 CPU ---- 0x1234 전송 ---->  리틀 엔디안 CPU(0x3412로 해석)

=> CPU마다 데이터 저장 순서가 다르기 때문에 데이터를 주고 받을 때 문제 발생 가능

 

네트워크 바이트 순서(Network Byte Order)

바이트 순서 문제를 해결하기 위해, 네트워크상으로 데이터 전송시 빅 엔디안 기준으로 변경해서 송수신하기로 정함
  • unsinged short htons(unsinged short) : short형 데이터를 리틀 엔디안 -> 빅엔디안으로 변환
  • unsinged short ntohs(unsinged short) : short형 데이터를 빅 엔디안 -> 리틀 엔디안으로 변환
  • unsinged long htonl(unsinged long) : long형 데이터를 리틀 엔디안 -> 빅엔디안으로 변환
  • unsinged long ntohl(unsinged long) : long형 데이터를 빅 엔디안 -> 리틀 엔디안으로 변환

* h는 host 바이트 순서, n은 network 바이트 순서로, h는 리틀엔디안, n은 빅엔디안으로 봄

SMALL

 

728x90
반응형
LIST