CIDR只保留构建树所需的前缀位,减少最终文件体积约100k;树底层使用map替代object提高大约7倍查询效率(实际单次查询差距绝对值在0.002ms以下,无意义的优化)
This commit is contained in:
@@ -27,16 +27,11 @@ def parse_args():
|
||||
def convert_cidr(cidr):
|
||||
if '/' in cidr:
|
||||
network = ipaddress.ip_network(cidr.strip(), strict=False)
|
||||
network_address = network.network_address
|
||||
prefixlen = network.prefixlen
|
||||
network_address = int(network.network_address) >> (network.max_prefixlen - network.prefixlen)
|
||||
else:
|
||||
network = ipaddress.ip_address(cidr.strip())
|
||||
network_address = network
|
||||
prefixlen = network.max_prefixlen
|
||||
if network.version == 4:
|
||||
return hex(int(network_address))[2:] + '/' + str(prefixlen)
|
||||
else:
|
||||
return network.compressed
|
||||
return hex(int(network_address))[2:]
|
||||
|
||||
def generate_cnip_cidrs():
|
||||
""" 从文件中读取CIDR地址 """
|
||||
|
||||
Reference in New Issue
Block a user