一个算法:有两个未知的IP,例如:ip1:10.80.1.1和ip2:10.30.1.1,怎么能计算机出他们之间所有的ip,然后用sql语句插入数据库,非常感谢!
在qq群里面看到有人发这个请求。正好有点闲暇,google了一下,没找到相关的算法sample, 就花了点时间想了个简单的算法,一运行,测试了很多例子都可以,
程序已经放到资源上去了
http://download.youkuaiyun.com/source/678380
那么今天有点时间,就把思路和算法贴出来,这个算法是可以优化的,不过我测试过在 酷睿2双核环境下,计算1.0.0.1- 10.10.10.10也不过是0.x秒的事,就暂时不做改进了
首先定义一个IPV4类(IPV6的原理差不多),主要实现一个方法Compare,就是根据传入的参数对IP进行比较,详细看代码
- public class IP
- { //记录ipV4的4个段 A.B.C.D
- public int A;
- public int B;
- public int C;
- public int D;
- public IP()
- {
- A = 0;
- B = 0;
- C = 0;
- D = 0;
- }
- /// <summary>
- /// 和M做比较,例如 T.Compare(M,3)那么就是比较 A,B,C这三位
- /// </summary>
- /// <param name="M">M,要比较的IP</param>
- /// <param name="i">i,要比较的位数,从A->D</param>
- /// <returns>-1表示比M小,0表示相等,1表示大</returns>
- public int Compare(IP M,

本文介绍了一个计算两个IPv4地址之间所有IP的简单算法,包括IP类的定义、比较方法以及初始化和核心算法的实现。该算法虽然效率一般,但能正确计算出IP范围,并适用于插入数据库。
最低0.47元/天 解锁文章
1329

被折叠的 条评论
为什么被折叠?



