<pre name="code" class="cpp">//互联网上可以有不同主机字节顺序,Unix提供了四个函数进行转换
#include<stdio.h>
#include <netinet/in.h>
/*
uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);
*/
int main()
{
//网络字节顺序 network byte order 大端字节顺序
//主机字节顺序 host byte order 小端字节顺序
//ntohl htonl 32bytes
//ntohs htons 16bytes
uint32_t net_addr = 0x12345678;
uint32_t host_addr = ntohl(net_addr);
uint32_t net_addr_back = htonl(host_addr);
printf("net_addr\t=%x\n",net_addr);
printf("host_addr\t=%x\n",host_addr);
printf("net_addr_back\t=%x\n",net_addr_back);
uint16_t net_addr_s = 0x1234;
uint16_t host_addr_s = ntohs(net_addr_s);
uint16_t net_addr_s_back = htons(host_addr_s);
printf("net_addr_s\t=%x\n",net_addr_s);
printf("host_addr_s\t=%x\n",host_addr_s);
printf("net_addr_s_back\t=%x\n",net_addr_s_back);
return 0;
}
[back@gx network]$ a.out
net_addr =12345678
host_addr =78563412
net_addr_back =12345678
net_addr_s =1234
host_addr_s =3412
net_addr_s_back =1234