以下是一个简单的程序,用于将十六进制格式的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 版权协议,转载请附上原文出处链接和本声明。
