2 byte(short)나 4byte (int) 경우에는 htons(), htonl() 이나 ntohs(), ntohl() 을 사용
8byte(64bit에서)는 아직까지는 직접 만들어 사용
// host -> network byte order (big endian)
long long htonll(long long llvalue){
printf("htonl: %llX\n", (long long)htonl(llvalue) << 32);
return (((long long)htonl(llvalue) << 32) + htonl(llvalue >> 32));
}
// network byte order -> host (little endian)
long long ntohll(long long llvalue){
printf("ntohl: %llX\n", (long long)ntohl(llvalue) << 32);
return (((long long)ntohl(llvalue) << 32) + ntohl(llvalue >> 32));
}
left shift 연산자 <<
비트값을 주어진 숫자만큼 왼쪽으로 이동 시킨 후 빈자리는 0으로 채움
<< 연산결과
int num1 = 3
num1 << 2; // num1 의 결과 값 3의 비트열을 2칸 왼쪽으로 이동한다
//
num1 = 0000 0011
num1 = 0000 1100 // num1 의 결과 값이 3에서 12로 변한다
right shift 연산자 >>
비트값을 주어진 숫자만큼 오른쪽으로 이동 시킨 후 빈자리는 정수 a의 최상의 부호비트와 같은 값으로 채움
> 연산결과
int num1 = 9
num1 >> 2; // num1 의 결과 값 9의 비트열을 2칸 오른쪽으로 이동한다
//
num1 = 0000 1001
num1 = 0000 0010 // num1 의 결과 값이 9에서 2로 변한다