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
当地址被 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