为什么同时存在`htons`和`ntohs`两个函数?

6

我不确定为什么标准库中存在htonsntohs两个函数。它们的作用完全相同,除非我搞错了什么!

htonlntohl也是如此。

2个回答

8

它们生成自文档化的代码,告诉读者数据是主机序还是网络序。


7

这是防止计算机具有不同于大端或小端的某种异常字节顺序(endianness)时使用的情况。

例如,如果值0x0A0B0C0D在内部表示为0B 0C 0D 0A,那么将此表示传递给htonl将返回0x0A0B0C0D,但ntohl将返回0x0C0D0A0B

我不知道是否存在这样的表示形式,但主机到网络和网络到主机的单独函数的存在使其成为可能。


2
我也考虑过这种情况,但是没有写答案,因为不对称的字节顺序只是一些吸毒的古怪芯片设计师的事情...;-) - alk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接