【发布时间】:2014-07-19 00:11:45
【问题描述】:
我有一个起始 IPv4 IP 地址5.39.28.128(或::ffff:5.39.28.128),我有一个 IPv6 网络掩码长度122,如何计算该范围内的最后一个 IP?
我认为我需要将起始 IP 转换为二进制,如下所示,我不知道从那里去哪里才能得到最终 IP。
$ipNumber = ip2long('5.39.28.128');
$ipBinary = decbin($ipNumber);
echo $ipBinary; // 101001001110001110010000000
原因是我将 CSV 格式的 MaxMind GeoIP 数据库导入 MySQL 数据库(因此如果需要,可以使用 MySQL 函数)。 MaxMind 不再提供结束 IP,而是提供起始 IP 和 IPv6 网络掩码长度。
【问题讨论】:
-
@TrippKinetics 不是那个的副本。我问的是 PHP 而不是 C,我没有完整的网络掩码,只有长度。
-
#1,即使语言不同,逻辑上也没有区别。 #2,网络掩码和长度是等价的。 en.wikipedia.org/wiki/Subnetwork
-
@TrippKinetics 你是对的,你的链接很有价值,这个问题不是重复的。重复的问题是真正的重复,语言的差异使它不是重复的。
-
您想在 php 或 MySQL 中执行此操作吗?如果您对 MySQL 不感兴趣,请从问题中删除标签。
标签: php mysql network-programming ip maxmind