我想知道如何在 C 中解析 IPv6 地址并将其转换为 128 位值?
所以像 1:22:333:aaaa:b:c:d:e
这样的十六进制地址需要转换成它的 128 位等效二进制。问题是 IP 地址可能是 ::2
类型及其变体,因为它们是有效的 IPv6 地址。
输入来自键盘,因此是 ASCII 格式。
最佳答案
您可以使用 POSIX inet_pton
将字符串转换为 struct in6_addr
。
#include <arpa/inet.h>
...
const char *ip6str = "::2";
struct in6_addr result;
if (inet_pton(AF_INET6, ip6str, &result) == 1) // success!
{
//successfully parsed string into "result"
}
else
{
//failed, perhaps not a valid representation of IPv6?
}
关于c - C中的IPv6解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2962664/