使用IPy模块,如何对IP地址执行算术运算?也就是说,某些功能可以执行以下操作:
>>> addIp(IPy.IP('10.0.0.0'), 2)
IP('10.0.0.2')
>>> addIp(IPy.IP('10.0.0.255'), 2)
IP('10.0.1.1')
IP
类型确实有__add__
方法,但它用于创建两个IP地址范围。
我知道这样做似乎很奇怪;我的用例是迭代IP范围,我宁愿这样做而不必实现我自己的base-256加法器。
答案 0 :(得分:0)
您可以利用IP地址只是花哨的整数这一事实,并执行常规整数运算并将结果转换回IP地址。
使用IPy,您可以使用.int()
获取基础整数表示。要将整数转换为IP地址,可以使用函数intToIp(ip, version)
返回IP字符串;请注意,如果结果超出有效范围,它将抛出ValueError
。
所以要实现你想要的addIp()
函数:
def addIp(ip, value):
return IPy.IP(intToIp(ip.int() + value, ip.version()))
>>> IPy.IP(IPy.intToIp(IPy.IP('10.0.0.255').int() + 2, 4))
IP('10.0.1.1')