我的ip地址为1.2.3.4,子网掩码为255.255.255.0
我想将其转换为cidr表示法 1.2.3.4/24
我如何在Python3中执行此操作?
答案 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)