short 메모리 값을 네트워크 바이트 순서에서 호스트 바이트 순서로 변경합니다.
호스트 바이트 순서란 지금 사용 중인 시스템에서 2바이트 이상의 큰 숫자 변수에 대해 바이트를 메모리 상에 어떻게 배치하는지 순서를 말하며, 네트워크 바이트 순서는 2 바이트 이상의 큰 숫자에 대해 어떤 바이트부터 전송할지에 대한 순서를 말합니다.
1 바이트 크기의 자료를 다른 시스템으로 전송할 때에는 문제가 없습니다만 2 바이트 이상의 큰 순자를 전송할 때, 큰 단위를 먼저 전송할 지 아니면 작은 단위의 값을 먼저 전송할 지를 미리 정하지 않으면 문제가 발생합니다.
즉, 16진수 값 0x1234와 같은 두 바이트 값은 시스템에 따라서 메모리에 저장할 때 작은 단위의 값부터 0x34, 0x12 순서로 저장하는 Little-Endian을 사용하는 시스템이 있는가 하면, 반대로 큰 단위의 값부터 0x12, 0x34식으로 저장하는 Big_Endian 시스템이 있습니다. 이렇게 바이트 배열 순서가 서로 다르다면 2바이트 이상의 큰 숫자를 전송할 때 어느 바이트가 큰 단위의 값인지를 모른다면 혼란이 발생할 것이므로 당연히 서로 전송하는 방식을 맞추어야 하는데, 네트워크에서는 Big-Endian을 사용합니다.
#include <stdio.h>
#include <arpa/inet.h>
int main( void)
{
short host_byte = 0x3412;
printf( "%x to %x\n", host_byte, ntohs( host_byte));
return 0;
}
'C언어' 카테고리의 다른 글
| IEEE 754 부동소수점표현 방식 (0) | 2009/04/27 |
|---|---|
| Big-Endan Little-Endan (0) | 2009/04/27 |



Prev
