代码如下:
 
#!/usr/bin/python
#filename:ipintoint.py
def ip_into_int(ip):
    return reduce(lambda x,y:(x<<8)+y,map(int,ip.split('.')))
def is_same_network(ip, network): 
    network = network.split('/') 
    mask = ~(2**(32-int(network[1])) - 1) 
    return (ip_into_int(ip) & mask) == (ip_into_int(network[0]) & mask)
if __name__ == '__main__': 
    print is_same_network('2.245.38.1', '219.245.32.0/20')
    print ip_into_int('1.1.1.1')
原理:
先把 192.168.1.13 变成16进制的 c0.a8.01.0d ,再去了“.”后转成10进制的 3232235789 即可。
可以直接:ping 3232235789
将ip地址从整数(如168442432)到以点号分隔的字符串类型(如10.10.58.64)之间的转换,或实现从字符串到整数的转换。
方式很多,可以用linux下的C语言编程,调用inet_aton等函数即可实现(参考man inet_aton)。
本文提供一种python的实现方法,更简单好用。
首先:
 
字符串到整数的转换:
 
更新版,结果都为正整数,前面这个当结果ip地址为128.0.0.0及其以上时,结果会表示为负数。
 
整数到字符串的转换:
 
各个函数的功能可以参考python的文档,例如:
 
更多内容请参考python documentation,在windows安装python2.5时还附带chm的文档。
对用户IP范围进行限制,如果使用直接IP地址方式对比的话性能很不好,通常是将IP地址转换为整数,类似“2130706433”这样,这个数字就是代表“127.0.0.1”这个IP地址。
用脚本进行计算
1)将IP转换为整数:
 
 2)将整数转换为IP: