php7 ipv6,php下ipv6转纯数字和反转
发布日期:2022-02-21 12:50:31 浏览次数:30 分类:技术文章

本文共 1081 字,大约阅读时间需要 3 分钟。

// ip转数字

function ip2long_v6($ip) {

$ip_n = inet_pton($ip);

$bin = '';

for ($bit = strlen($ip_n) - 1; $bit >= 0; $bit--) {

$bin = sprintf('%08b', ord($ip_n[$bit])) . $bin;

}

if (function_exists('gmp_init')) {

return gmp_strval(gmp_init($bin, 2), 10);

} elseif (function_exists('bcadd')) {

$dec = '0';

for ($i = 0; $i < strlen($bin); $i++) {

$dec = bcmul($dec, '2', 0);

$dec = bcadd($dec, $bin[$i], 0);

}

return $dec;

} else {

trigger_error('GMP or BCMATH extension not installed!', E_USER_ERROR);

}

}

// 把转的数字反转义成ip

function long2ip_v6($dec) {

if (function_exists('gmp_init')) {

$bin = gmp_strval(gmp_init($dec, 10), 2);

} elseif (function_exists('bcadd')) {

$bin = '';

do {

$bin = bcmod($dec, '2') . $bin;

$dec = bcdiv($dec, '2', 0);

} while (bccomp($dec, '0'));

} else {

trigger_error('GMP or BCMATH extension not installed!', E_USER_ERROR);

}

$bin = str_pad($bin, 128, '0', STR_PAD_LEFT);

$ip = array();

for ($bit = 0; $bit <= 7; $bit++) {

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

$ip[] = dechex(bindec($bin_part));

}

$ip = implode(':', $ip);

return inet_ntop(inet_pton($ip));

}

转载地址:https://blog.csdn.net/weixin_33958381/article/details/115594673 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:matlab v4l2,基于Linux的v4l2视频架构驱动编写
下一篇:云片 php sms接口视频,Laravel、云片网络短信发送PHP SDK

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月18日 10时13分28秒