unsigned int convert_order32(unsigned int before)
{
int i = 0;
unsigned int r = 0;
for (i = 0; i < 32; ++i)
{
if (before&1<<i)
{
r=r|1<<(i/4%2?(7-(i/4-1))*4+i%4:(7-(i/4+1))*4+i%4);
}
}
return r;
}
int main(int argc,char *argv[])
{
int i = 0;
struct hostent *host_entry;
struct in_addr in_addr;
host_entry = gethostbyname(argv[1]);
while (host_entry->h_addr_list[i] != NULL)
{
in_addr.s_addr = *((u_long *)(host_entry->h_addr_list[i]));
printf("official host name: \t\t\t%s\n",host_entry->h_name);
printf("host address type: \t\t\t%d\n",host_entry->h_addrtype);
printf("length of host address : \t\t%d\n",host_entry->h_length);
printf("IP address: \t\t%s (hexa) 0x%x\n",
inet_ntoa(in_addr),
convert_order32(in_addr.s_addr));
++i;
}
return 0;
}
참고로 이건 학부 네트워크 수업 시간 때 만든 건데 convert_order32()는 당시 한창 코드 골프를 하고 있던 때라 바이트 정렬을 30분 정도 고민해서 만든 것이다.
official host name: www.g.daum.net
host address type: 2
length of host address : 4
IP address: 180.70.93.55 (hexa) 0xb4465d37
official host name: www.g.daum.net
host address type: 2
length of host address : 4
IP address: 180.70.93.56 (hexa) 0xb4465d38