怎么看ipv6的地址范围啊 我不会看ipv6的地址范围,比如下面这两个地址范围是指从哪个地址到哪个地址啊?2406:6200::|32240e:100::|24为什么平时的ip库都是分开的,放在同一个表中会有什么问题吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这都是16进制表示,2字节一个:。::表示接下来的都是0.mysql还是可以操作的,unhex啊,substring,replace啊,看你需求了。 我知道正常格式的ipv6地址,不知道怎么把这种含有CIDR的ipv6地址范围计算成一个ip地址范围 IP地址是可以按照字符串比较大小的, 要计算范围内的每一个IP, 可以gmp/bc直接当做大数运算, 我说的是PHP, 你有需求可以给你写个示例? 谢谢你的回复。我是想把ip地址文件转换成ip数据库,文件里面的ip范围是用CIDR方式表示的,就像一条一条apnic|LK|ipv6|2400:ff00::|32|20110603|allocatedapnic|PK|ipv6|2401::|32|20061103|allocated这样的记录,我想把2400:ff00::|32转化成2400:ff00:0000:0000:0000:0000:0000:0000-某个范围这样一种形式,或者转化成某个整数到某个整数的范围。 [User:root Time:09:54:16 Path:/home/liangdong/php]$ php ip.php 2406:6200:0000:0000:0000:0000:0000:0000[User:root Time:09:54:17 Path:/home/liangdong/php]$ cat ip.php <?php$ipv6_start = "2406:6200::";$ipv6_end = "240e:100::";// 扩展ipv6格式方便阅读$bin_start = inet_pton($ipv6_start);$bin_end = inet_pton($ipv6_end);$start = unpack('H*0', $bin_start)[0];$start = str_split($start, 4);$start = implode(":", $start);echo $start;/* 作为大数运算, 可以遍历start, end内所有IP地址$start = gmp_init($start, 16);$end = unpack('H*0', $bin_end)[0];$end = gmp_init($end, 16);echo gmp_strval($start, 16);*/?>写了个例子, 你看需求扩展。 注释部分要用的话把implode里边第一个参数换成""就行了。 2400:ff00::|32应该是从2400:ff00:0000:0000:0000:0000:0000:0000- 2400:ff00:0000:0000:0000:0000:ffff:ffff后面的CIDR是位数, 32位就是ffff:ffff 你好像说反了,2400:ff00::|32应该是从2400:ff00:0000:0000:0000:0000:0000:0000- 2400:ff00:ffff:ffff:ffff:ffff:ffff:ffff吧 不好意思啊,再请教你一下,我用inet_pton总是出现Warning: inet_pton(): Unrecognized address 2001:200:: in E:\www\test\a\step2\step2.php on line 63这样的出错,不知道为什么,好像不能识别这种格式啊 有人用php连接过微软的多维数据集吗? 为什么我的网页在DW和在浏览器里面的不一样呢?帮我看一下,谢谢 为什么获取不到留言id呢? 如何获取客户来访信息,如:IP,操作系统,浏览器等.问题解决马上结贴 PHP开发的不错的OA在线办公系统,快去下载吧 PHP怎样获取执行的方法名呢 我的程序为什么提示这个错误 啊 ---请哥哥们帮忙了! [求助]fopen函数权限问题 PHP可以操作Access为数据库吗? 为什么显示出来的是乱码 一直不太理解为什么用了smarty还要用memcache~~~~ PHP 视屏如何添加超链接
我是想把ip地址文件转换成ip数据库,文件里面的ip范围是用CIDR方式表示的,就像一条一条
apnic|LK|ipv6|2400:ff00::|32|20110603|allocated
apnic|PK|ipv6|2401::|32|20061103|allocated
这样的记录,我想把2400:ff00::|32转化成2400:ff00:0000:0000:0000:0000:0000:0000-某个范围这样一种形式,或者转化成某个整数到某个整数的范围。
2406:6200:0000:0000:0000:0000:0000:0000[User:root Time:09:54:17 Path:/home/liangdong/php]$ cat ip.php
<?php
$ipv6_start = "2406:6200::";
$ipv6_end = "240e:100::";// 扩展ipv6格式方便阅读
$bin_start = inet_pton($ipv6_start);
$bin_end = inet_pton($ipv6_end);
$start = unpack('H*0', $bin_start)[0];
$start = str_split($start, 4);
$start = implode(":", $start);
echo $start;/* 作为大数运算, 可以遍历start, end内所有IP地址
$start = gmp_init($start, 16);
$end = unpack('H*0', $bin_end)[0];
$end = gmp_init($end, 16);
echo gmp_strval($start, 16);
*/
?>写了个例子, 你看需求扩展。
注释部分要用的话把implode里边第一个参数换成""就行了。
应该是从
2400:ff00:0000:0000:0000:0000:0000:0000
-
2400:ff00:0000:0000:0000:0000:ffff:ffff
后面的CIDR是位数, 32位就是ffff:ffff
应该是从
2400:ff00:0000:0000:0000:0000:0000:0000
-
2400:ff00:ffff:ffff:ffff:ffff:ffff:ffff吧