我得到了一个带有 IPv6 地址的名为 ipv6 的字符串。我想将 IP 用于 DNSBL 作为 zen spamhaus 或其他 DNS。我该怎么做 ?以下代码在压缩的 IPv6 中无法按预期工作。我怎样才能零填充?C++ 中的所有代码。
std::string invertirv6 (const std::string &str) {
struct in6_addr *addr;
inet_pton(AF_INET6,str.c_str(),&addr);
char str2[41];
sprintf(str2,"%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x",
(int)addr->s6_addr[15], (int)addr->s6_addr[14],
(int)addr->s6_addr[13], (int)addr->s6_addr[12],
(int)addr->s6_addr[11], (int)addr->s6_addr[10],
(int)addr->s6_addr[9], (int)addr->s6_addr[8],
(int)addr->s6_addr[7], (int)addr->s6_addr[6],
(int)addr->s6_addr[5], (int)addr->s6_addr[4],
(int)addr->s6_addr[3], (int)addr->s6_addr[2],
(int)addr->s6_addr[1], (int)addr->s6_addr[0]);
string retorno = str2;
return retorno;
}