C语言十六进制IP地址转换为十进制

  • Post author:
  • Post category:其他


以下是一个简单的程序,用于将十六进制格式的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;

}

说明:


  1. inet_pton()

    函数用于将十六进制格式的 IP 地址转换成二进制格式;第一个参数指定了地址族,第二个参数是十六进制格式的 IP 地址字符串,第三个参数是返回的结构体;

  2. inet_ntop()

    函数用于将二进制格式的 IP 地址转换成点分十进制格式;第一个参数指定地址族,第二个参数是包含了 IP 地址信息的结构体(如

    struct in_addr

    ),第三个参数是存放点分十进制格式的字符串缓冲区,第四个参数是缓冲区大小;
  3. 在使用这两个函数时,需要根据实际情况选择目标地址族(如 IPv4 或 IPv6),并使用相应的结构体(如

    struct in_addr



    struct in6_addr

    );
  4. 在进行格式转换之前,需要引入头文件

    <arpa/inet.h>



版权声明:本文为MrWangHao原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。