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

以下是一个简单的程序,用于将十六进制格式的IP地址转换成点分十进制格式:

#include
#include

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_addrstruct in6_addr);
  4. 在进行格式转换之前,需要引入头文件

你可能感兴趣的:(夜深人静C语言,c语言,linux)