【问题标题】:When and how to use C++ htonl function何时以及如何使用 C++ htonl 函数
【发布时间】:2015-05-22 00:59:09
【问题描述】:
cout << "Hello World !" << endl;

对于我在堆栈上的第一篇文章overflow:我们应该什么时候使用htonl 函数?我已经浏览了手册页。但是,我真的不明白何时以及如何使用它。

【问题讨论】:

  • 每当您将 4 字节值发送到另一台机器时。然后接收机器使用ntohl来恢复值。
  • 只有在进行网络编程或在不同计算机体系结构之间共享二进制数据时才需要它。有推论函数ntohl,实际上是same function作为同一平台上的htonl。还有htonsntohs用于2字节值。
  • 值得一提的是,许多现代应用程序以文本方式传输数据,例如通过 HTTP 使用 XML。但是,较低级别的编程将以二进制形式提供数据,而计算世界仍然是异构的。
  • 感谢您提供的所有有用信息!

标签: c++ htonl


【解决方案1】:

Host TO N网络翻译。它确保 32 位数据值的 endian 对于网络传输是正确的(大端序)。 ntohl -- Network TO Host -- 被接收器用来确保接收器 CPU 的字节序正确。 留意 htonsntohs 处理 16 位,在某处可能有 htonllntohll 处理 64 位。

使用所有这些就像传入您要转换的数字一样简单,然后输出转换后的数字。您可能会发现某些处理器上完全没有发生任何事情,因为它们的字节序已经很大。

uint32_t inval = 0xAABBCCDD;
uint32_t outval = htonl(inval);

在大多数桌面硬件上,将导致 outval 设置为 0xDDCCBBAA

【讨论】:

    猜你喜欢
    • 2020-06-07
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    • 2019-02-09
    相关资源
    最近更新 更多