请澄清我的疑问,因为我对以下内容感到非常困惑,而且我在网上的任何其他地方都找不到干净的答案。
#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
?