下面是一个将IPv4和IPv6地址字符串转换为二进制形式并统一存储在缓冲区中的示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <arpa/inet.h>
int main() {
const char* ipv4Str = "192.0.2.1";
const char* ipv6Str = "2001:db8::1";
// 用于存储二进制形式的IP地址的缓冲区
unsigned char ipBin[16];
// IPv4地址转换
if (inet_pton(AF_INET, ipv4Str, ipBin) <= 0) {
printf("Invalid IPv4 address\n");
return 1;
}
printf("IPv4 binary: ");
for (int i = 0; i < 4; ++i) {
printf("%02x", ipBin[i]);
}
printf("\n");
// IPv6地址转换
if (inet_pton(AF_INET6, ipv6Str, ipBin) <= 0) {
printf("Invalid IPv6 address\n");
return 1;
}
printf("IPv6 binary: ");
for (int i = 0; i < 16; ++i) {
printf("%02x", ipBin[i]);
}
printf("\n");
return 0;
}
上述代码中,我们定义了一个长度为16的ipBin
数组作为缓冲区,用于存储二进制形式的IP地址。通过调用inet_pton
函数将IP地址字符串转换为二进制形式,并将结果直接存储在ipBin
数组中。最后,我们通过遍历ipBin
数组将转换结果以十六进制形式输出。
请注意,上述代码仅为演示用途,实际使用时应添加错误检查和适当的错误处理,并根据需求对缓冲区大小进行调整。
内容由零声教学AI助手提供,问题来源于学员提问