【发布时间】:2012-07-10 12:30:32
【问题描述】:
我在 little-endian [LE] 机器 [Linux,Intel 处理器] 上运行了以下程序。我无法解释下面代码 sn-p 中的 3 个输出。由于机器是 LE,a 的值存储为0x78563412。打印时,它显示其实际值。由于它是一台 LE 机器,我希望 ntohl() 是空操作并显示 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
【问题讨论】:
标签: c endianness