将 Ip 字符串转换为整数以检查它是否属于 CIDR 块

Converting Ip string to Integer to check if it falls within an CIDR block

我有一组顶点,其中包含一个 属性 Ip,它被声明为字符串。

我想检查此 IP 是否在 CIDR 块内或 IP 范围内。

有没有办法将String up属性转换为数字,以便我可以执行操作。

今天的 Gremlin 没有字符串操作步骤和运算符,因此您无法执行将字符串转换为整数或拆分和连接字符串等操作。但是它确实有一个 math 步骤。

我看到两个选项:

  1. 将 IP 存储为 4 个数字的列表或四个单独的属性。

  2. 使用内联代码 (lambdas) 来完成这项工作。然而,许多图形数据库不允许内联 lambda 代码,通常不建议将其作为最佳实践。

如果您能够将值存储为列表或四个属性,则可以使用 math 步骤将四个字节转换为一个十进制数并与其他数字进行比较。

短期内,最好将 IP 地址存储为简单的 4 字节整数值,以便于比较。

要将 IP 地址转换为整数表示法,将 IP 地址的每个部分(以“.”分隔)乘以 256x。在这种情况下,x 表示该部分从右到左的位置,从 0 开始。这是使用此公式的示例:

192.168.1.1 = (192 * 256^3) + (168 * 256^2) + (1 * 256^1) + (1 * 256^0)