当我们需要将IP地址从二进制格式转换为可读的字符串格式时,可以使用inet_ntop
函数。下面是一个简单的C代码例子,演示了如何使用inet_ntop
函数:
#include <stdio.h>
#include <arpa/inet.h>
int main() {
struct in_addr addr;
const char* ip = "192.168.0.1";
// 将IP地址从字符串转换为二进制格式
if (inet_pton(AF_INET, ip, &(addr.s_addr)) <= 0) {
perror("Invalid IP address");
return 1;
}
char buffer[INET_ADDRSTRLEN];
// 将二进制格式的IP地址转换为字符串格式
if (inet_ntop(AF_INET, &(addr.s_addr), buffer, INET_ADDRSTRLEN) == NULL) {
perror("Conversion failed");
return 1;
}
printf("Original IP: %s\n", ip);
printf("Converted IP: %s\n", buffer);
return 0;
}
在这个例子中,我们首先定义了一个存储IPv4地址的结构体struct in_addr
,然后将字符串形式的IP地址”192.168.0.1”转换为二进制格式并存储在结构体中。接下来,我们创建一个字符数组用于存储转换后的IP地址,并使用inet_ntop
函数将二进制格式的IP地址转换成字符串格式,并将结果存储在buffer数组中。最后,我们打印出原始的IP地址和转换后的IP地址。
请注意,在编译代码时,需要链接-lws2_32
库(Windows系统)或者-lnsl -lsocket
库(Linux系统)。
内容由零声教学AI助手提供,问题来源于学员提问