inet_pton:将可读的IP地址转换为其压缩的in_addr表示形式

inet_ntop:将打包的Internet地址转换为可读的表示形式

inet_ntop(inet_pton($ip));


IPv4 与整数互转

/*** 代替 long2ip 函数* @param $ip* @return string * */
function convertIpToString($ip)
{   $long = 4294967295 - ($ip - 1);return long2ip(-$long);
}/*** 代替 ip2long 函数* @param $ip* @return string * */
function convertIpToLong($ip)
{return sprintf("%u", ip2long($ip));
}$ip_long = $this->convertIpToLong('192.168.8.30');
$long_ip = $this->convertIpToString($ip_long);
echo $ip_long; // 3232237598
echo $long_ip; // 192.168.8.30

IPv6 与整数互转

/*** IPV6 地址转换为整数* @param $ipv6* @return string * */function ip2long6($ipv6)
{$ip_n = inet_pton($ipv6);$bits = 15; // 16 x 8 bit = 128bit$ipv6long = '';while ($bits >= 0) {$bin = sprintf("%08b", (ord($ip_n[$bits])));$ipv6long = $bin . $ipv6long;$bits--;}return gmp_strval(gmp_init($ipv6long, 2), 10);
}
/*** 数字转为IPv6地址* 数字长度38位*/
function long2ip_v6($dec)
{if (function_exists('gmp_init')) {$bin = gmp_strval(gmp_init($dec, 10), 2); //10进制 -> 2进制} elseif (function_exists('bcadd')) {$bin = '';do {$bin = bcmod($dec, '2') . $bin; //10进制 -> 2进制,获取$dec/2的余数$dec = bcdiv($dec, '2', 0); // dec/2的值,0表示小数点后位数} while (bccomp($dec, '0'));} else {// trigger_error('GMP or BCMATH extension not installed!', E_USER_ERROR);return 'GMP or BCMATH extension not installed!';}$bin = str_pad($bin, 128, '0', STR_PAD_LEFT); // 给2进制值补0$ip = array();for ($bit = 0; $bit <= 7; $bit++) {$bin_part = substr($bin, $bit * 16, 16); // 每16位分隔$ip[] = dechex(bindec($bin_part)); // 2进制->10进制->16进制}$ip = implode(':', $ip);// inet_pton:将可读的IP地址转换为其压缩的in_addr表示形式// inet_ntop:将打包的Internet地址转换为可读的表示形式return inet_ntop(inet_pton($ip));
}// 测试
$ip6_long = $this->ip2long6('2001:4860:a005::68');
$long_ip6 = $this->long2ip6($ip6_long);
echo $ip6_long; // 42541956150894553250710573749450571880
echo $long_ip6; // 2001:4860:a005::68

参考链接

https://www.w3xue.com/exp/article/201811/6927.html

【PHP】IPv4与整数转换、IPv6与整数转换相关推荐

  1. php主机转发ipv6,php实现ipv4转换ipv6

    php实现ipv4转换ipv6 首先ipv6是什么? IPv6是下一版本的互联网协议,也可以说是下一代互联网的协议,它的提出最初是因为随着互联网的迅速发展,IPv4定义的有限地址空间将被耗尽,地址空间 ...

  2. android 整数与ip地址的转换

    今天,简单讲讲android里如何把整数与ip地址进行转换. 这个很简单,在网上查找资料就找到了.这里记录一下. 1.IP地址转换为整数 将IP地址转化成整数的方法如下:      1.通过Strin ...

  3. PTA第3章-9 字符串转换成十进制整数 (15 分)

    第3章-9 字符串转换成十进制整数 (15 分) 输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出.如果在第 ...

  4. 非整数倍数数据位宽转换8to12

    非整数倍数数据位宽转换8to12 题目描述 实现数据位宽转换电路,实现8bit数据输入转换为12bit数据输出.其中,先到的数据应置于输出的高bit位. 电路的接口如下图所示.valid_in用来指示 ...

  5. ipv4转换ipv6工具_IPv4与IPv6的区别,不仅仅是地址变长而已

    IP地址是分配给上网设备的数字标签,是每一个网络和设备的逻辑地址,我们在访问网站.发送文件或传输任何报文都会打包成一个个数据包,然后按照IP地址,传送数据包.我们上网时在浏览器里输入的网站是方便记忆的 ...

  6. 关于EXP-00056: 遇到 ORACLE 错误 1455 ORA-01455: 转换列溢出整数数据类型 EXP-00000: 导出终止失败 的问题解决方法整理

    关于EXP-00056: 遇到 ORACLE 错误 1455 ORA-01455: 转换列溢出整数数据类型 EXP-00000: 导出终止失败 的问题解决方法整理 参考文章: (1)关于EXP-000 ...

  7. bool类型数组转换成一个整数_Python如何处理数据?如何把数据转换成我们想要的?三种处理方法...

    平时我们在处理数据的时候,有些数据类型不是我们想要的,怎么办? 如: python数据转换 num01,num02是str类型,但是我们需要的是整型,所以通过int转换成了整数. 数据转换 如何完成数 ...

  8. 三位整数两位小数掩码_子网掩码转换32位整数

    IP地址优选网写过很多相关文章介绍,一些朋友还是对子网掩码.ip地址的网段等不太了解,我们下面一起来看看网友常常问到的一些相关问题.子网掩码转换32位整数 一.什么是子网掩码? 在了解ip地址的网段之 ...

  9. mysql金额数字转成中文_数字金额大写转换(可以处理整数,小数,负数)

    数字金额大写转换(可以处理整数,小数,负数) 代码 //数字金额大写转换 function upDigit(n) { var fraction = ['角', '分']; var digit = [' ...

最新文章

  1. 阅读笔记: 凸包的例子(一)
  2. 服务器不能显示中文,彻底解决delphi WebBroker服务器中文乱码 delphi WebBroker服务器不能显示中文网页 WebBroker中文显示乱码...
  3. 【实验】广域网点到点协议PPP PAP CHAP的双向验证、单项认证
  4. 关于思考写程序的意义
  5. Java队列集合的性能测试
  6. guice注入带参构造器_带有Guice的富域模型
  7. docker 安装部署nacos
  8. linux sd启动盘制作工具,制作Mini Linux U盘启动盘
  9. spark to mysql date_[Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子:
  10. 《HTML 5与CSS 3 权威指南(第3版·上册)》——第1章 Web时代的变迁
  11. 【LeetCode】【字符串】题号:*541. 反转字符串 II
  12. 就问你慌不慌:每天都有 一百万 程序员在投简历
  13. system()函数
  14. 运维基础实用知识点--软件篇
  15. dpi和css,DPI和像素、厘米、英寸之间的关系和换算及CSS中的长度单位
  16. 余额宝提现测试点【杭州多测师】【杭州多测师_王sir】
  17. 计算机键盘上的句号键在哪,电脑键盘句号是哪个键
  18. 基于Eclipse的毕业设计题目50例
  19. 证据权重 (WOE) 与信息价值 (IV)
  20. Node.js MySQL连接数据库 Error: Cannot enqueue Handshake after invoking quit.

热门文章

  1. Py之wxPython:wxPython的简介、安装、使用方法之详细攻略
  2. 成功解决 from ._conv import register_converters as _register_converters
  3. python、numpy,keras,tensorflow等函数用法积累(持续更新)
  4. page分页问题,根据页码获取对应页面的数据,接口调用
  5. 五分钟搞定 Linux 文档全部知识,就看这篇文章
  6. Codeforces 题解 CF863A 【Quasi-palindrome】
  7. ng机器学习视频笔记(二) ——梯度下降算法解释以及求解θ
  8. USACO Broken Necklace 题解(环展开成链,枚举)
  9. 砝码问题之一(回头发现貌似多重背包)
  10. grep命令參数及使用方法