htons函数没有转换成网络字节序
htons和ntonhs输出的结果是一样的,并且我的机器是小端存储的,htons并没有把主机字节序转换成网络字节序。...
htons和ntonhs输出的结果是一样的,并且我的机器是小端存储的,htons并没有把主机字节序转换成网络字节序。
展开
1个回答
展开全部
如果是脑筋急转弯,我猜题主用0x0000或0x1111做的测试。
说正经的,题主可能这样测试:assert(htons(0x1234) == ntohs(0x1234)),
因为电脑是小端字节序,因此0x1234经过htons变换后输出0x3412,ntohs(0x1234)也输出0x3412,让楼主产生了“没有进行转换”的错觉。
实际情况是,两次转换都非常成功,第一次将本机的0x1234转换成网络字节序0x3412,第二次将网络序0x1234转换成本机0x3412,因此结果相同。
说正经的,题主可能这样测试:assert(htons(0x1234) == ntohs(0x1234)),
因为电脑是小端字节序,因此0x1234经过htons变换后输出0x3412,ntohs(0x1234)也输出0x3412,让楼主产生了“没有进行转换”的错觉。
实际情况是,两次转换都非常成功,第一次将本机的0x1234转换成网络字节序0x3412,第二次将网络序0x1234转换成本机0x3412,因此结果相同。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询