【发布时间】:2013-03-29 15:07:40
【问题描述】:
请澄清我的疑问,因为我对以下内容感到非常困惑,我无法得到 清除网络上其他任何地方的 anwser。
#include<stdio.h>
int main()
{
int a = 0x44332211;
printf("Network - 0x%x\n", htonl(a));// Host to network
printf("Host - 0x%x\n", ntohl(a));// Network to host
return 0;
}
输出:
Network - 0x11223344
Host - 0x11223344
这里htonl(0x44332211) => 我正在将小端(LE)转换为BE。所以输出将是0x11223344。我明白了。我的问题是ntoh()。现在ntohl(0x44332211) => 什么?
在这里,我在 1 个终端上执行这两个命令。所以主机到网络,即hton() 表示我的终端到网络。这就说得通了。但是这里ntohl() 是什么意思?如果我们有ntohl(),就会出现:
a PC A----(ie hton)sending data over network------>(ie ntoh) to PC B?
另外ntoh 需要一个网络字节顺序,即大端。请解释上面的ntohl() 是什么意思,为什么它的打印与0x11223344 相同,为什么不是0x44332211?
【问题讨论】:
标签: c endianness htonl