读书人

对同一个值做了2次ntohs之后等于没

发布时间: 2012-03-26 15:46:56 作者: rapoo

对同一个值,做了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么?

服了- -

读书人网 >UNIXLINUX

热点推荐