c - C中的IPv6解析

标签 c parsing ipv6

我想知道如何在 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/

相关文章:

c - 为什么这个 C 代码的输出应该是 "no"?

c - 如何将ascii字符串转换为二进制?

python - python中的xml文件解析

javascript - 已到达字符串末尾,但未找到右括号 : NodeJS & Jade

ios - CFStream 类是否符合 IPV6 标准?我正在使用 CFStreamCreatePairWithSocketToHost 连接到套接字而不是低级套接字 api

c - C中这个表达式的返回类型是什么?

c - 我应该在函数指针的 typedef 中保留 `_In_` 、 `_Out_` 之类的宏吗?

java - 将包含ascii字符串的byte[]快速转换为int/double/date等,无需new String

http - uWSGI --http :80 doesn't listen IPv6 interface

python - 除了 Udp6SocketTransport Pysnmp 之外还有其他替代方案吗