我在 little-endian [LE] 机器 [Linux,Intel 处理器] 上运行了以下程序。我无法解释下面代码片段中的 3 个输出。由于机器是 LE,所以 的值a
存储为0x78563412
。打印时,它显示其实际值。由于它是一台 LE 机器,我希望ntohl()
它是一个 no-op 和 display 0x78563412
,它正在这样做。但是,我希望0x12345678
第二个打印语句包含htonl()
. 有人可以帮我理解为什么它们是一样的吗?
int main()
{
int a = 0x12345678;
printf("Original - 0x%x\n", (a));
printf("Network - 0x%x\n", htonl(a));
printf("Host - 0x%x\n", ntohl(a));
return 0;
}
输出:
Original - 0x12345678
Network - 0x78563412
Host - 0x78563412