在python中提取ipv6前缀

时间:2008-12-11 20:33:39

标签: python ipv6

给定IPv6地址的二进制或字符串表示及其前缀长度,在Python中提取前缀的最佳方法是什么?

是否存在可以为我执行此操作的库,或者我是否必须:

  1. 将地址从字符串转换为int(inet_ntop)
  2. 屏蔽前缀
  3. 将前缀转换回二进制
  4. 将二进制转换为字符串(inet_ntop)

3 个答案:

答案 0 :(得分:2)

请参阅http://code.google.com/p/ipaddr-py/

有了这个,你可以做到

py> p=ipaddr.IPv6("2001:888:2000:d::a2")
py> p.SetPrefix(64)
py> p
IPv6('2001:888:2000:d::a2/64')
py> p.network_ext
'2001:888:2000:d::'

答案 1 :(得分:0)

使用python netaddr库:

>>> from netaddr.ip import IPNetwork, IPAddress
>>> IPNetwork('2001:888:2000:d::a2/64').network
2001:888:2000:d::

答案 2 :(得分:0)

您还可以编写一个自己的小函数来提取IPv6前缀:

import React from 'react';

export const UserData = () => {
  return(
     <form>
        <input type="text" placeholder="Name" />
        <input type="email" placeholder="Email" />
        <button>Confirm</button>
     </form>
  )
}