【发布时间】:2019-01-12 21:57:16
【问题描述】:
我从here 那里读到过,
关于一个假设的 "stupid-endian" C 实现,其中字节 既不是大端(订购
4321)也不是小端(订购1234),但是订购了例如3214,你仍然有htonl(ntohl(x)),但htonl和ntohl不会这样做 事情,它们将是相反方向的 8 位旋转。我希望 不存在这样的架构,但它可以实现套接字 API 感谢htonl和ntohl是独立的函数。
但我无法理解和弄清楚 的含义,但 htonl 和 ntohl 不会做同样的事情,它们会是相反方向的 8 位旋转。 会是什么如果它们以相反的方式旋转,就会发生。函数的逻辑行为如何?
你能描述和解释它的逻辑吗?
附:这意味着在这种情况下,htonl 和 ntohl 函数的实现是不同的,htonl(x) != ntohl(x)
【问题讨论】:
-
我想强调的是,您的真正问题与 htonl 或 ntohl 无关。您不理解“在任一方向按字节旋转 int”的含义。一旦你挖掘了它,你的具体问题就会自己回答:)
标签: c sockets bit-manipulation endianness