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.要把它转化为无符号的,可以用