须知:IP地址格式:192.168.1.1; 理论最小IP地址0.0.0.0;
理论最大IP地址255.255.255.255;
因此理论IP地址总数为256^4=2^32(0-255有256个数),即0.0.0.0 , 0.0.0.1 , 0.0.0.2 ...... 255.255.255.255。
首选需要把所有IP地址数据换算成32位的二进制形式,并排序,如0.0.0.0为第一位,0.0.0.1为第二位……255.255.255.255为第2^32位。
如直接把40亿个IP地址转换为int进行比较(每个int在内存空间内存储为4个Byte,共32Bit),共需4GB内存空间。
但如果把所有IP地址组成一个集合并排序,每个地址下标组成数组,最大只需2^32 Bit=2^32/8/1024/1024=512MB的内存空间。
所以只需把某IP地址转换为第XX位,并与所有地址下标进行比较,遍历比较,存在记为1,不存在记为0,即可判断某IP地址是否在40亿个IP地址中存在。
|
|