为什么'htons`和`ntohs`都存在?

时间:2016-06-02 17:27:35

标签: c posix endianness

我不确定为什么htonsntohs都存在于标准库中。他们做同样的事情 - 除非我以某种方式感到困惑!

htonlntohl同样如此。

2 个答案:

答案 0 :(得分:7)

他们制作自我记录的代码,告诉读者数据是以主机还是网络顺序。

答案 1 :(得分:6)

这是因为除了big-endian或little-endian之外,机器还有某种不寻常的endianness,它不是一个或多个简单的字节交换。

例如,如果值0x0A0B0C0D在内部表示为0B 0C 0D 0A,则将此表示传递给htonl将返回0x0A0B0C0D,但ntohl将返回{ {1}}。

我不知道任何具有此类表示的平台,但主机到网络和网络到主机的单独功能的存在允许这种可能性。