你如何在python3中转换为cidr?

时间:2015-04-17 16:17:50

标签: python

我的ip地址为1.2.3.4,子网掩码为255.255.255.0

我想将其转换为cidr表示法 1.2.3.4/24

我如何在Python3中执行此操作?

2 个答案:

答案 0 :(得分:2)

使用标准库中的ipaddress模块。


地址加网络掩码是网络或接口,而不是地址。鉴于你已经设置了一些主机位(它的1.2.3.4,而不是1.2.3.0),要么你有一个接口,要么你有一个非接口网络的规范名称;我假设它是一个界面,所以请使用ip_interface

>>> i = ipaddress.ip_interface('1.2.3.4/255.255.255.0')

或者,如果你想确定它是明确的IPv4而不是IPv6:

>>> i = ipaddress.IPv4Interface('1.2.3.4/255.255.255.0')

或者您可以从地址和网络中组合它,而不是从组合字符串中组合出来。这取决于您拥有此信息的格式以及对您有意义的内容。


要获取CIDR格式,请使用with_prefixlen访问者:

>>> i.with_prefixlen
'1.2.3.4/24'

您还可以执行各种其他漂亮的操作 - 将地址(1.2.3.4)提取为i.address,或将网络(1.2.3.0/24)提取为i.network,或枚举通过将i.network视为序列等来网络上的所有地址

答案 1 :(得分:0)

您可以使用IPy库来执行此操作。如果向下滚动到文档,您可以看到它可以执行的字符串转换。我们追求的是strNormal(1)

IP("1.2.3.4/255.255.255.0").strNormal(1)