在C语言中,可以使用inet_pton函数将IPv4和IPv6地址的字符串表示转换为二进制形式。
以下是一个示例代码,演示了如何将IPv4和IPv6地址字符串转换为二进制形式:
#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
int main() {
// IPv4地址转换
const char* ipv4Str = "192.0.2.1";
struct in_addr ipv4Bin;
if (inet_pton(AF_INET, ipv4Str, &ipv4Bin) <= 0) {
printf("Invalid IPv4 address\n");
return 1;
}
printf("IPv4 binary: %08x\n", ntohl(ipv4Bin.s_addr));
// IPv6地址转换
const char* ipv6Str = "2001:db8::1";
struct in6_addr ipv6Bin;
if (inet_pton(AF_INET6, ipv6Str, &ipv6Bin) <= 0) {
printf("Invalid IPv6 address\n");
return 1;
}
printf("IPv6 binary: ");
for (int i = 0; i < 16; ++i) {
printf("%02x", ipv6Bin.s6_addr[i]);
}
printf("\n");
return 0;
}
上述代码通过调用inet_pton
函数进行地址转换,并将结果输出为二进制形式。需要注意的是,在使用printf
函数输出IPv4地址时,需要使用ntohl
函数对结果进行字节序转换。同样地,在输出IPv6地址时,需遍历每个字节并打印为十六进制形式。
请注意,上述代码仅为演示用途,实际使用时应添加错误检查和适当的错误处理。
内容由零声教学AI助手提供,问题来源于学员提问