5

我正在使用 python-netaddr 库来处理 IP 地址和子网。我阅读了完整的 netaddrd 文档:Netaddr 文档。但没有找到任何解决我的问题的方法。我有一个 IP 地址和子网,我想通过使用它们来获取该 IP 的前缀。这样我就可以打印所有进入子网的 ip。

例如:

Ip Address: 192.0.2.0
Subnet Network: 255.255.255.0

It should return the prefix which is : 24
4

4 回答 4

6

要获得 24,您可以使用以下代码段

ip = IPNetwork('192.0.2.0/255.255.255.0')
print ip.prefixlen

但是,如果您想要子网中所有地址的列表,则使用起来更容易:

ip = IPNetwork('192.0.2.0/255.255.255.0')
list(ip)
于 2012-05-30T09:35:06.517 回答
3

使用给定的网络掩码,我们可以使用以下函数获取前缀:

def getPrefix(mask):
    prefix = sum([bin(int(x)).count('1') for x in mask.split('.')])
    return prefix
于 2014-02-25T02:43:54.850 回答
0
def getPrefix(binary):
    prefixCount=0
    for i in (str(binary)):
        if(i == '1'):
            prefixCount+=1
    return prefixCount

如果子网转换为二进制格式并在输入中给出,这将返回您的“前缀计数”。

于 2014-02-24T09:56:41.193 回答
0

子网掩码是:255.255.255.0 这就是 ic it:1。1. 1. 0

255 是所有 8 位都打开。IE。全部为 1。0 是所有 8 位都关闭。如果您查看此子网掩码 [255.255.255.0],前 3 个八位字节全部变为“开启”,而最后一个八位字节变为“关闭”。
因此,计算在这种情况下为 ON 的所有八位字节,我们可以说 3 个八位字节: 255.255.255.0 1 。1. 1 .0 8 + 8 + 8 + 0 =24

于 2014-06-03T00:38:42.677 回答