以下是一个简单的程序,用于将十六进制格式的IP地址转换成点分十进制格式:
#include <stdio.h>
#include <arpa/inet.h>
int main() {
struct in_addr addr;
// 将十六进制格式的 IP 地址转换成二进制格式
if (inet_pton(AF_INET, “0x7f000001”, &addr) == 0) {
perror(“inet_pton”);
return -1;
}
// 将二进制格式的 IP 地址转换成点分十进制格式并打印
char ip[INET_ADDRSTRLEN];
inet_ntop(AF_INET, &addr, ip, INET_ADDRSTRLEN);
printf(“%s\n”, ip);
return 0;
}
说明:
-
inet_pton()
函数用于将十六进制格式的 IP 地址转换成二进制格式;第一个参数指定了地址族,第二个参数是十六进制格式的 IP 地址字符串,第三个参数是返回的结构体; -
inet_ntop()
函数用于将二进制格式的 IP 地址转换成点分十进制格式;第一个参数指定地址族,第二个参数是包含了 IP 地址信息的结构体(如
struct in_addr
),第三个参数是存放点分十进制格式的字符串缓冲区,第四个参数是缓冲区大小; -
在使用这两个函数时,需要根据实际情况选择目标地址族(如 IPv4 或 IPv6),并使用相应的结构体(如
struct in_addr
或
struct in6_addr
); -
在进行格式转换之前,需要引入头文件
<arpa/inet.h>
。
版权声明:本文为MrWangHao原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。