php long2ip,php 中IPV6 ip2long的问题解决办法

function ip2bin($ip)

{

if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false)

return base_convert(ip2long($ip),10,2);

if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) === false)

return false;

if(($ip_n = inet_pton($ip)) === false) return false;

$bits = 15; // 16 x 8 bit = 128bit (ipv6)

while ($bits >= 0)

{

$bin = sprintf("%08b",(ord($ip_n[$bits])));

$ipbin = $bin.$ipbin;

$bits--;

}

return $ipbin;

}

function bin2ip($bin)

{

if(strlen($bin) <= 32) // 32bits (ipv4)

return long2ip(base_convert($bin,2,10));

if(strlen($bin) != 128)

return false;

$pad = 128 - strlen($bin);

for ($i = 1; $i <= $pad; $i++)

{

$bin = "0".$bin;

}

$bits = 0;

while ($bits <= 7)

{

$bin_part = substr($bin,($bits*16),16);

$ipv6 .= dechex(bindec($bin_part)).":";

$bits++;

}

return inet_ntop(inet_pton(substr($ipv6,0,-1)));

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值