【发布时间】:2016-06-02 17:27:34
【问题描述】:
我不确定为什么htons 和ntohs 都存在于标准库中。他们做的事情完全相同——除非我不知何故感到困惑!
htonl 和 ntohl 也是如此。
【问题讨论】:
标签: c posix endianness
我不确定为什么htons 和ntohs 都存在于标准库中。他们做的事情完全相同——除非我不知何故感到困惑!
htonl 和 ntohl 也是如此。
【问题讨论】:
标签: c posix endianness
它们编写了自记录代码,告诉读者数据是按主机顺序还是网络顺序。
【讨论】:
这是为了以防机器有某种不寻常的endianness,除了不是一个或多个简单字节交换的大端或小端。
例如,如果值 0x0A0B0C0D 在内部表示为 0B 0C 0D 0A,则将此表示形式传递给 htonl 将返回 0x0A0B0C0D,但 ntohl 将返回 0x0C0D0A0B。
我不知道有任何平台具有这样的表示,但是主机到网络和网络到主机的单独功能的存在允许这种可能性。
【讨论】: