Преобразование строки IP в целое число, чтобы проверить, попадает ли она в блок CIDR - PullRequest
1 голос
/ 18 июня 2020

У меня есть набор вершин, которые содержат свойство Ip, которое объявлено как String.

Я хочу проверить, находится ли этот IP внутри блока CIDR или в пределах диапазонов IP.

Is есть способ преобразовать атрибут String up в число, чтобы я мог выполнить операцию.

Ответы [ 2 ]

3 голосов
/ 18 июня 2020

Сегодня в Gremlin нет шагов и операторов обработки строк, поэтому вы не можете делать такие вещи, как преобразование строк в целые числа или разделение и объединение строк. Однако он имеет шаг math.

Я вижу два варианта:

  1. Сохранить IP как список из 4 чисел или как четыре отдельных свойства.

  2. Используйте встроенный код (лямбды) для выполнения работы. Однако многие графические БД не допускают встроенного лямбда-кода, и, как правило, это не рекомендуется как лучшая практика.

Если вы могли сохранить значения в виде списка или в виде четырех properties вы можете затем использовать шаг math, чтобы преобразовать четыре байта в одно десятичное число и сравнить с другими числами.

В краткосрочной перспективе было бы лучше хранить IP-адреса как простые 4-байтовые целые числа, чтобы упростить сравнение.

0 голосов
/ 28 августа 2020

Чтобы преобразовать IP-адрес в целочисленное представление, каждый раздел IP-адреса (разделенный знаком ".") Умножается на 256x. В этом случае x представляет положение раздела справа налево, начиная с 0. Вот пример использования этой формулы:

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

...