Think before you speak, read before you think.

ip2long与long2ip

在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/


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *