日志标签:ip to long

ip to long 原理

时间:2013年08月01日作者:小侃评论次数:0

经常遇到把类似220.12.23.77 这样的ip转换成一个长整数的要求
PHP中还有专门的函数 ip2long    long2ip,

ip to  long 简单算法是这样的

function IpToInt($Ip) {
 $array=explode(‘.’,$Ip);
 $Int=($array[0] * 256*256*256) + ($array[1]*256*256) + ($array[2]*256) + $array[3];
 return $Int;
}

代码很简单,但是有人不知道为什么要不停的乘以256,我来解释一下子
ip to  long 的过程是这样的,先把ip转为2进制,再把4个2进制数连起来,
再把这个得到的2进制数转为10进制数,就是想要的数。

ip是4字节32位的,255转为2进制就是8个1,11111111,
220    11011100
12       00001100
23      00010111
77      01001101
把这4个连起来 11011100000011000001011101001101
再把它转为10进制,得到3691779917

也可以这样,位操作,道理是一样的
202<<24
96<<16
134<<8
133