gpt4 book ai didi

c - 为什么 inet_ntoa 和 inet_ntop "reverse"字节?

转载 作者:行者123 更新时间:2023-12-05 00:34:38 29 4
gpt4 key购买 nike

这是一个相当基本的问题,令我惊讶的是,我今天遇到了一个问题。

在我看来,inet_pton 和 inet_ntoa 正在反转它们给定的 IP 地址的字节:

DWORD IP;
inet_pton(AF_INET, "192.168.0.1", &IP);
printf("%08X\n", IP);

这将打印 0100A8C0 .好吧,如果我们分解字节,它是 01.00.A8.C0 = 1.0.168.192 .

相似地:
IP = 0x7F000001;
struct in_addr ia;
ia.S_un.S_addr = IP;

printf("%s\n", inet_ntoa(ia));

给我 1.0.0.127 .

首先想到的是字节序,但我已经阅读了 MSDN 文档( 12 )并且没有提到字节顺序;我觉得奇怪的是,这些函数会在没有规范明确说明的情况下任意决定使用其中一种符号。

到底是怎么回事?

最佳答案

字节序 原因。

这些函数的全部意义不是产生一个“可读”的整数,而是设置一个 32 位的数量,准备好通过网络发送出去。 IPv4 需要大端排序,所以我敢打赌,如果你这样做了 printf("%02X\n", ((char *)&IP)[0])); , 你会得到 C0 .

关于c - 为什么 inet_ntoa 和 inet_ntop "reverse"字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30153966/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com