IP地址比较方法在进行IP地址查询的时候 往往需要比较这个IP地址是否是属于某个IP段中 如: 202.202.202.100 在 202.202.1.1 -- 202.202.255.255 范围内 方法: 1. 将IP地址每段转换为数字 a=202, b=202, c=202 , d=100 2. 通过移位操作 再或操作 将四个整数合成一个整数 num= (a << 24) | (b<< 16) | (c << 8) | d 3.同样将IP区间的两个地址也这样转换为一个32位整数 begin= (202 << 24) | (202<< 16) | (1 << 8) | 1 end= (202 << 24) | (202<< 16) | (255<< 8) | 255 4.直接比较 begin <= num <= end 就可以得出是否属于该IP段 5.将这样的32位整数转换为IP地址 方法同理 IP= a.ToString() + "." + b.ToString() + "." + c.ToString() + "." + d.ToString() ---------------------------------------------------------------------------------------------------------------------------- 附上:此功能的类(C#) #region 转换IP地址为整型 foreach(byte b in bytes)
也可以直接把IP地址中间的点去掉直接比较两个数如202.202.202.1 202.202.1.255 比较 202202202001>202202001255 两个千亿级的数比较 在C/C++ 需要使用long long类型保存数据 在.NET下使用Int64 保存 |
|