IPv6 アドレスのバイナリ表現または文字列表現とそのプレフィックス長が与えられた場合、Python でプレフィックスを抽出する最良の方法は何ですか?
私のためにこれを行うライブラリはありますか、それとも次のようにする必要がありますか?
- アドレスを文字列から int に変換します (inet_ntop)
- プレフィックスをマスクします
- プレフィックスをバイナリに戻す
- バイナリを文字列に変換 (inet_ntop)
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::'
等
Python netaddrライブラリの使用:
>>> from netaddr.ip import IPNetwork, IPAddress
>>> IPNetwork('2001:888:2000:d::a2/64').network
2001:888:2000:d::