我想计算 Ipv4 和 Ipv6 地址的前缀长度。子网掩码可以是字符串形式(1、32、97 等)或点分格式 (255.255.0.0)。我想强加以下条件。 1) 对于 ipv4,这两种格式都应该被允许。但是当我们从 string 转换为 unsigned 时,前缀长度不应超过 31 2) 对于 ipv6 只允许前缀长度。不能超过127
虽然我可以通过传递子例程很容易地完成上述计算,但我被要求使用 boost 定义的类和方法来完成相同的计算。
任何人都可以为上述建议适当的 boost 方法。我已尝试进行一些搜索,但无法搜索。
参数可以是前缀长度字符串格式 (16 , 97) 或点分格式的掩码,也可能是地址(字符串)。 boost 方法应该能够根据已经提到的限制将前缀长度确定为无符号。
最佳答案
有用的 boost 部分是 regex
,用于分析您得到的内容,以及 lexical_cast
用于将字符串转换为数字。
关于c++ - ipv6地址的前缀长度计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16353634/