问题: 有个需求,需要将“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
具体参考:

这篇博客介绍了如何使用Python处理IP地址,特别是将IP范围转换为CIDR格式。作者探讨了使用IPy和netaddr两个库的方法,指出IPy在处理某些IP范围时的限制,并提供了使用netaddr库的示例,该库能够正确计算IP范围并转换为CIDR块。
最低0.47元/天 解锁文章
5354

被折叠的 条评论
为什么被折叠?



