求思路 如何判断一个IP是否在某网段内
whirlwind (别人笑,不去想,我就为你而倔强.除了你,都一样,不能放,害怕丢失唯一的信仰.你在我永远到不了的地方!) | 2013-11-05 00:10
我的思路是
1.AAA.BBB.CCC.DDD-aaa.bbb.ccc.ddd
拆分成数组,一个一个比较
1.IP==边界
2.比较AAA,如果不同 且在范围内 返回1
然后比较BBB 如果不同 且在范围内 返回1
如果BBB相同 比较CCC 如果不同 且在范围内 返回1
如果CCC相同 比较DDD 如果不同 且在范围内 返回1
否则返回0
这块是不是可以递归调用下??
有啥好的算法啊,我感觉这样判断也忒麻烦了吧。。PHP。。
比如CSDN上看到 有人直接去掉. 然后比大小。。不过位数问题哇。。
大牛勿喷。。小弟连芝诺的乌龟问题刚才都没想明白呢。。
相关讨论:
1#
Hydra | 2013-11-05 02:20
ip可以做成int去判断
2#
核攻击 (统治全球,奴役全人类!毁灭任何胆敢阻拦的有机生物!) | 2013-11-05 11:26
建议楼主了解下ip格式的基本知识。
a.b.c.d 8.8.8.8 192.168.1.1 192.168.1.255
这种叫“点分十进制”表示格式,主要是为了方便人类阅读与理解。
还有另外其他几种格式,例如十进制格式:
192.168.1.1 = 192*256*256*256 + 168*256*256 + 1*256 + 1 = 3232235777 (十六进制:C0A80101) 192.168.2.255 = 192*256*256*256 + 168*256*256 + 2*256 + 255 = 3232236287 (十六进制:C0A802FF)
那么要判断范围就相当简单了,例如:192.168.1.1 - 192.168.2.255
if ip_int > 3232235777 and ip_int < 3232236287 then echo "192.168.1.1 - 192.168.2.255" end if
3#
whirlwind (别人笑,不去想,我就为你而倔强.除了你,都一样,不能放,害怕丢失唯一的信仰.你在我永远到不了的地方!) | 2013-11-05 20:02
@核攻击
真机智。。非常感谢哇,哈哈
留言评论(旧系统):