Geolocation 比较不带圆点的IP地址与带圆点的IP地址

Geolocation 比较不带圆点的IP地址与带圆点的IP地址,geolocation,location,ip,compare,ip-address,Geolocation,Location,Ip,Compare,Ip Address,我有一个数据库,其中包含一系列IP地址和该范围的位置。该范围以不带圆点的IP表示,例如昆士兰地区的25946112-25946367 现在我想将一些IP与这个数据库进行比较,并获得它们的位置。我的IP是用点十进制表示的。我的问题是:我可以仅仅通过删除点将这些地址与范围进行比较,还是必须添加零?比如: 123.231.4.11至123231004011。但是,正如您所看到的,数据库IP并没有全部12位数字。我还试图测试25946112以上的样本,但无法找到位置 谢谢你的帮助。 Thomas在数据库

我有一个数据库,其中包含一系列IP地址和该范围的位置。该范围以不带圆点的IP表示,例如昆士兰地区的25946112-25946367

现在我想将一些IP与这个数据库进行比较,并获得它们的位置。我的IP是用点十进制表示的。我的问题是:我可以仅仅通过删除点将这些地址与范围进行比较,还是必须添加零?比如: 123.231.4.11至123231004011。但是,正如您所看到的,数据库IP并没有全部12位数字。我还试图测试25946112以上的样本,但无法找到位置

谢谢你的帮助。
Thomas在数据库中存储IP地址的一种方法是将它们存储为整数。我认为你的数据库就是这样。
你不应该只是替换点和比较。相反,您应该将IP转换为整数,然后进行比较。各种RDBMs提供了简化此操作的功能。例如,mysql提供了

仅删除点是不够的,因为一个IP转换有多种可能性

换句话说,根据你的例子,当你试图从 123.231.4.11到123231004011在这种情况下是可能的,但相反,如果没有零,25946112可以是2.59.46.112、25.9.46.112、25.94.6.112、25.94.61.12

因此,您需要应用一些逻辑,例如它们是否是有效的IP。 当然,如果任何八位字节超过255,并且它们不属于任何IP类,则可能无效: 以下四个是有效的IP,因此您需要更多地理定位信息

2.59.46.112
25.9.46.112
25.94.6.112
25.94.61.12

你能告诉我们一些信息吗?例如,哪个八位组拥有昆士兰州最多的IP?目标是继续过滤添加条件,直到您只有一种可能,即您应该从数据库中的其他字段和表中获取的条件。

我将重点讨论有关IP数据的这个问题:例如,您如何知道25946112是2.59.46.112还是25.94.6.112?您完全正确。我想可能有人知道如何使用这种符号。谢谢你的提问。太棒了!就这样。谢谢!