在这个问题中,我处理的是 IPv6 网络地址空间,所以长度是2^(128-subnet).
看来python(至少在这台机器上)将处理多达 64 位有符号数作为来自__len__(). 所以len(IP('2001::/66'))有效,但len(IP('2001::/65'))失败了。
from IPy import IP
len(IP('2001::/64'))
Traceback (most recent call last):
File "test.py", line 2, in <module>
len(IP('2001::/64'))
OverflowError: long int too large to convert to int
有问题的 IPy 库位于https://github.com/haypo/python-ipy。
关于如何处理这个问题的任何建议,或者暗示这可能是我坚持的限制?