ip转数字,ip地址转十进制 long类型,ip转十进制输出负数

最近在公司做一些解析ip的需求,把ip转成整型当作redis的key值是一个不错的选择。下面说一下ip地址怎么转整型的。

php语法

 

echo ip2long("220.181.1.2"); // 输出结果:-592117502

以上出现了负数,原因是ip地址较大,这里可以将其转成无符号格式。

 

echo sprintf("%u",ip2long($ipAdd)); //输出结果:3702849794   用sprintf %u 转化成无符号

ip2long是php自带的函数,她的转化原理很简单:

ip大家都知道是四段,每段范围是0-255,也就是四个0-255的数字用"."拼接起来的。

ip2long就是把每一段都写成二进制然后拼起来,注意这里转成二进制是要转成8位,不足8位补齐8位。例如:1就是00000001,5就是00000101,最大的255就是11111111,8位。再然后将拼起来的二进制转成十进制。

 

$ipAdd = "220.181.1.2";
$ipArr = explode(".",$ipAdd);
$ipStr = "";
for($i=0;$i<4;$i++){
    echo sprintf("%08d", decbin($ipArr[$i]))."<br/>"; //这里循环输出:11011100  10110101  00000001  00000010 不足8位的用0补齐8位
    $ipStr .=sprintf("%08d", decbin($ipArr[$i])); 
}
echo $ipStr."<br/>";//这里是拼接起来的结果:11011100101101010000000100000010
echo bindec($ipStr);//这里是二进制转成十进制的结果:3702849794

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值