繁体   English   中英

IPv6地址Python

[英]IPv6 Address Python

我的IPv6地址等于“ 2001:200:e000 :: / 35”。 但是,我不能从库ipaddress在函数ip_address()上输入它。 该函数非常适合不包含“ /”的地址,例如IPv4“ 1.0.0.0”和IPv6“ 2001:12f8:0:17 :: 23”:

ipaddress.ip_address(unicode("1.0.0.0","utf-8"))

收益:

IPv4Address(u'1.0.0.0')

ipaddress.ip_address(unicode("2001:12f8:0:17::23","utf-8"))

收益:

IPv6Address(u'2001:12f8:0:17::23')

但是,当我尝试将其用于IPv6“ 2001:200:e000 :: / 35”时,

ipaddress.ip_address(unicode("2001:200:e000::/35","utf-8"))

收益:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/ipaddress.py", line 168, in ip_address
    address)
ValueError: u'2001:200:e000::/35' does not appear to be an IPv4 or IPv6 address

我应该如何将包含“ /”的IP地址输入到ip_address?

所谓的“带有/的IP地址”实际上不是IP地址。 它们是IP网络(表示IP地址范围),称为“ CIDR表示法”。

您可以使用ipaddress.ip_network()处理IP网络。 例如:

>>> ipn = ipaddress.ip_network("2001:200:e000::/35")
>>> ipn.num_addresses
9903520314283042199192993792

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM