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

Bre*_*ent 5 c posix endianness

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

这同样适用于htonlntohl.

Jon*_*art 7

它们用于自我记录代码,告诉读者数据是按主机还是网络顺序排列.


dbu*_*ush 6

这是因为除了big-endian或little-endian之外,机器还有一些不寻常的字节序,而不是一个或多个简单的字节交换.

例如,如果值0x0A0B0C0D在内部表示为0B 0C 0D 0A,则传递此表示htonl将返回0x0A0B0C0Dntohl将返回0x0C0D0A0B.

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

  • 我也在考虑这种情况,但没有写出答案,因为 *** 不对称*** 字节顺序是古怪的芯片设计人员喜欢的东西...... ;-) (2认同)