php的IP转换成整型函数ip2long()易出现负数

作者:计算机教程

 

php中将IP转换成整型的函数ip2long()容易出现问题,在IP比较大的情况下,会变成负数。
如下:

php中将IP转换成整型的函数ip2long()容易出现问题,在IP比较大的情况下,会变成负数。如下

<?php
$ip = "192.168.1.2";
$ip_n = ip2long($ip);
echo $ip_n;      //得到 -1062731518
?>

 

由于IP转换成的整型值太大超出了整型的范围,所以变成负数。需写成$ip_n = bindec(decbin(ip2long($ip)));这样便可得到无符号的整型数,如下:

<?php
<?php
$ip = "192.168.1.2";
$ip_n = bindec(decbin(ip2long($ip)));
echo $ip_n;      //得到 3232235778
?>
$ip = "192.168.1.2";

PS: 另一个方法:

$ip_n = ip2long($ip);
$ip_long = = sprintf("%u", ip2long($ip));
echo $ip_n;      //得到 -1062731518

 

?>

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

由于IP转换成的整型值太大超出了整型的范围,所以变成负数。需写成$ip_nba买球,n = bindec(decbin(ip2long($ip)));这样便可得到无符号的整型数,如下

<?php
echo ip2long("10.2.1.3");
?>

 

我们将得到
167903491

本文由nba买球发布,转载请注明来源

关键词: