【问题标题】:Why do both `htons` and `ntohs` exist?为什么 `htons` 和 `ntohs` 都存在?
【发布时间】:2016-06-02 17:27:34
【问题描述】:

我不确定为什么htonsntohs 都存在于标准库中。他们做的事情完全相同——除非我不知何故感到困惑!

htonlntohl 也是如此。

【问题讨论】:

    标签: c posix endianness


    【解决方案1】:

    它们编写了自记录代码,告诉读者数据是按主机顺序还是网络顺序。

    【讨论】:

      【解决方案2】:

      这是为了以防机器有某种不寻常的endianness,除了不是一个或多个简单字节交换的大端或小端。

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

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

      【讨论】:

      • 我也在考虑这个案例,但没有写出答案,因为 asymmetric 字节顺序对于古怪的芯片设计者来说是个问题。 .. ;-)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-14
      • 1970-01-01
      • 2017-06-10
      • 2016-07-15
      相关资源
      最近更新 更多