background image

php IP 转换整形(ip2long)总结分析

本文主要是是对 php 中 IP 转换整形(

ip2long

)进行了详细的分析介绍

如何将四个字段以点分开的 IP 网络址协议地址转换成整数呢?PHP 里有这么一个函数

ip2long

.比如

代码如下:
 
<?php

echo

 

ip2long

("10.2.1.3");

?>
 
我们将得到
167903491
 
这是如何计算的,目前我知道有两个算法。其一
代码如下:
 
<?php

function

 ip2int(

$ip

){

//我们先把 ip 分为四段,$ip1,$ip2,$ip3,$ip4

list(

$ip1

,

$ip2

,

$ip3

,

$ip4

)=

explode

(".",

$ip

);

//然后第一段乘以 256 的三次方,第二段乘以 256 的平方,第三段乘以 256
//这即是我们得到的值

return

$ip1

*pow(256,3)+

$ip2

*pow(256,2)+

$ip3

*256+

$ip4

;

}
?>
 
其二,用位运算

 

复制代码 代码如下:
 
<?php

function

 ip2int(

$ip

){

list(

$ip1

,

$ip2

,

$ip3

,

$ip4

)=

explode

(".",

$ip

);

return

(

$ip1

<<24)|(

$ip2

<<16)|(

$ip3

<<8)|(

$ip4

);

}
?>
 
我们会发现,有些 ip 转化成整数后,是负的,这是因为得到的结果是有符号整型,最大
值是 2147483647.要把它转化为无符号的,可以用