在php中可以知道 ip2long 函数将ip转为整型,long2ip将整型转为ip,从而方便计算。
ip分为四段,将第一段*256^3,第二段*256^2,第三段*256^1,第四段*256^0,最后相加,这样就计算出了一个唯一的值。如果都是最大值,算出来的值是
>>> 255*256*256*256 + 255*256*256 + 255*256 + 255
4294967295
我们可以发现mysql中int型的取值范围是4个字节,十进制为
0 到 4294967295
所以所有的ipv4地址用mysql的int恰好可以完整记录
python中互相转换的方法如下
import socket import struct def ip2long(ipstr): return struct.unpack("!I", socket.inet_aton(ipstr))[0] def long2ip(ip): return socket.inet_ntoa(struct.pack("!I", ip))
http://hily.me/blog/2009/03/python-ip2long-long2ip/
Leave a Reply