如何在IPy IP地址上执行算术运算?

时间:2015-02-09 06:43:44

标签: python ip-address

使用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加法器。

1 个答案:

答案 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')