为什么函数没有转换成网络字节序?

htons和ntonhs输出的结果是一样的,并且我的机器是小端存储的,htons并没有把主机字节序转换成网络字节序。

梵蒂冈之花
浏览 96回答 1
1回答

三国纷争

如果是脑筋急转弯,我猜题主用0x0000或0x1111做的测试。说正经的,你可能这样测试:assert(htons(0x1234) == ntohs(0x1234)),因为电脑是小端字节序,因此0x1234经过htons变换后输出0x3412,ntohs(0x1234)也输出0x3412,让楼主产生了“没有进行转换”的错觉。实际情况是,两次转换都非常成功,第一次将本机的0x1234转换成网络字节序0x3412,第二次将网络序0x1234转换成本机0x3412,因此结果相同。
打开App,查看更多内容
随时随地看视频慕课网APP