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