【发布时间】:2019-07-24 10:04:11
【问题描述】:
我需要将 IPV6 地址转换为 15 个字符长度的整数,以便我可以使用 IP2LOCATION 数据库?
这是我从http://download.ip2location.com/lite/这里下载的数据库“IP2LOCATION-LITE-DB1.IPV6.CSV”
我尝试使用这个函数,但它给了我很长的字符串:
function ipv6_numeric($ip) {
$binNum = '';
foreach (unpack('C*', inet_pton($ip)) as $byte) {
$binNum .= str_pad(decbin($byte), 8, "0", STR_PAD_LEFT);
}
return base_convert(ltrim($binNum, '0'), 2, 10);
}
ipv6_numeric('fe80:0:0:0:202:b3ff:fe1e:8329')
return "338288524927261046600406220626806860202"
【问题讨论】:
-
粗略一看,这只是部分十进制表示。文档中还有更多示例代码:blog.ip2location.com/knowledge-base/…
-
如果你继续往下看,会有相当多的数字大小范围(第 186000 行往下)。