use*_*248 1 c++ equals mask ip-address ipv6
我必须比较两个IPv6地址及其掩码,看它们是否相同.它们都是字符串,例如"xxxx:xxxx:xxxx:xxxx/xx".我只是使用memcmp逐位比较它们,但是当真实时这可能返回false,因为xxxx:xxxx:0000:xxxx/xx和xxxx:xxxxx :: xxxxx/xx在技术上是相同的地址.
我宁愿不创建地址和掩码的子串,但如果有一个比较两个IPv6地址的函数,我会这样做.有什么建议?:)
你应该使用转换为二进制形式的二进制形式inet_pton,然后比较二进制形式(你只能比较16个字节的数据memcmp).
如果您需要比较屏蔽地址,那么您将需要做更多的工作.inet_pton不会为你解析前缀长度("/ something")所以你必须:
inet_ptonatoi...在比较它们之前在每个地址上.