银河基金管理公司:htons()/ntohs()函数使用?具体请看代码

来源:百度文库 编辑:九乡新闻网 时间:2024/05/02 21:47:30
#include #include union {short s;char c[sizeof(short)];}un,nn;int main(){un.s=0x0102;if(sizeof(short)==2){if(un.c[0]==1&&un.c[1]==2)printf("1big-endian\n");else if(un.c[0]==2&&un.c[1]==1)printf("1littel-endian\n");}else{printf("sizeof(short)=%d\n",sizeof(short));}nn.s=htons(un.s); 注意:用这句和下面注释掉的语句输出结果一样结果一样。为什么?//nn.s=ntohs(un.s);if(sizeof(short)==2){if(nn.c[0]==1&&nn.c[1]==2)printf("2big-endian\n");else if(nn.c[0]==2&&nn.c[1]==1)printf("2littel-endian\n");}else{printf("sizeof(short)=%d\n",sizeof(short));}return 0;}
最佳答案
htons和ntohs实际上是两个相同的函数,如果主机与网络字节顺序不同,颠倒过来(按字节,参数是u_short,两个字节)0x1234---->0x3412否则不变。就是说htons和ntohs都是将0xabcdefgh变为0xghefcdab0xabcd变为0xcdab