先转二进制,左边补齐0,再右边补齐0,再转十进制计算
$ip = '0210.110.11.49';
function ipToInt($ip){
$iparr=explode('.',$ip);
$d=0;
foreach ($iparr as $key=>$value){
$t=decbin($value);
$t=str_pad($t,8,'0',STR_PAD_LEFT);
$t=str_pad($t,32-8*$key,'0',STR_PAD_RIGHT);
$d+=bindec($t);
}
return $d;
}
echo $ip.'<br />';
$ip_int = ipToInt($ip);
echo $ip_int.'<br />';
echo long2ip($ip_int);
$ip = '0210.110.11.49';
function ipToInt($ip){
$iparr = explode('.',$ip);
return (intval($iparr[0]<<24))|
(intval($iparr[1])<<16)|(intval($iparr[2])<<8)|
(intval($iparr[3]));//|按位或运算
}
echo $ip.'<br />';
$ip_int = ipToInt($ip);
echo $ip_int.'<br />';
echo long2ip($ip_int);
$ip = '0210.110.11.49';
function ipToInt($ip){
$iparr = explode('.',$ip);
$num = 0;
for($i=0;$i<count($iparr);$i++){
$num += intval($iparr[$i]) * pow(256,count($iparr)-($i+1));//pow() 函数返回 x 的 y 次方。
}
return $num;
}
echo $ip.'<br />';
$ip_int = ipToInt($ip);
echo $ip_int.'<br />';
echo long2ip($ip_int);