问题: 有个需求,需要将“192.168.0.0-192.168.0.255”的IP range形式转换成CIDR形式。
方法1: 使用IPy 包
具体参考:https://github.com/autocracy/python-ipy
https://blog.youkuaiyun.com/qq_40809549/article/details/79697329
简单示例:
from IPy import IP
IP('192.168.1.0-192.168.1.255',make_net=True).strNormal(1) #prefix格式,string类型
编码过程发现问题:
(1)在使用IP('192.168.1.1/255.255.255.0) 是会报错,has invalid prefix length(24)。经过查询发现需要添加make_net=1才行。即:IP('192.168.1.1/255.255.255.0,make_net=1)
(2)使用IP('192.168.0.0-192.168.4.255',make_net=True) 也会报错,具体原因是无法转换成CIDR形式,因为在第三段数字,其二进制有000,001,010,011,100,归为/21却不全,/21包括:000,001,010,011,100,101,110,111。因此,只能考虑使用其他包,例如netaddr
方法2:使用netaddr
具体参考: