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