inet_pton转换后的地址如何解释?

How to interpret the address converted from inet_pton?

当地址被 inet_pton 函数转换为 struct in_addr 时,我对从指定地址获得的值感到困惑。有了这个:

#include <stdio.h>
#include <arpa/inet.h>

int main(){
    char str[4];
    inet_pton(AF_INET, "1.2.3.4", (int*)str);
    printf("%i\n", *((int*)str));
}

我明白了

67305985

所以地址 1.2.3.4 被转换为值 67305985 的“网络地址”(inet_pton 的手册页),我不明白。我知道该函数将转换后的值保存为 struct in_addr 类型,但这基本上是一个 int,因此我可以将其转换为 int(我这样做了)并得到这些废话。那么我应该如何解释地址 1.2.3.4 中的值 67305985

您得到的值是以小端字节顺序解释的字节值 1、2、3 和 4 的十进制表示形式。

如果您单独打印每个字节,您会看到它们包含值 1、2、3 和 4。

char str[4];
int i;
inet_pton(AF_INET, "1.2.3.4", (int*)str);
for (i=0; i<4; i++) {
    printf("%d\n", str[i]);
}

输出:

1
2
3
4