日期:2014-05-16  浏览次数:20750 次

对同一个值,做了2次ntohs之后,等于没变化
int main()
240 {
241 unsigned short a,b;
242 a=ntohs(1293);
243 b=ntohs(a);
244 printf("%d,%d\n",a,b);
245 return 0;
246 }


jzhang@lyra:~/test> gcc -o test test.c
jzhang@lyra:~/test> ./test
3333,1293


------解决方案--------------------
转换了两次当然还是回到了host byte order,所以值不变了。
------解决方案--------------------
那说明你的主机字节序与网络字节序不同

如果字节序相同的话,ntohs没有实际效果
如果不同的话,就是把字节序倒序

你倒两次,就回去了
------解决方案--------------------
楼主太2了。。。 楼主,你有本事把一开始那个常数:1293打印出来。。。

那不就是1293,3921,1293么?

服了- -