Как бы вы сравнили два IP-адреса, чтобы увидеть, какой из них больше? - PullRequest
0 голосов
/ 08 сентября 2010

Например, ниже приведены два набора IP-адресов, как бы вы определили больший IP для каждого набора?

SET A:

10.192.3.177 и 10.192.2.204

SET B:

10.192.3.205 и 10.192.2.204

Спасибо !!

Ответы [ 3 ]

4 голосов
/ 08 сентября 2010

Если вы преобразуете их в 32-разрядное целое число, тем больше будет большее целое число. Другими словами:

10.192.3.177 -> 0x0ac003b1 (180,356,017) (bigger)
10.192.2.204 -> 0x0ac002cc (180,355,788)

10.192.3.205 -> 0x0ac003cd (180,356,045) (bigger)
10.192.2.204 -> 0x0ac002cc (180,355,788)

Я с трудом представляю себе случай использования, где это будет иметь значение, но я бы выбрал такой подход, если бы мне пришлось проверить программу.

1 голос
/ 13 сентября 2010

Если вы ищете способ сортировки списка IP-адресов, вы также можете сохранить IP-адрес в строке с каждым октетом, начинающимся с 0 до 3 цифр. Тогда сортировка текста работает нормально.

Пример:

010.192.002.204
010.192.003.177 
1 голос
/ 08 сентября 2010

Вы, вероятно, должны уточнить, что вы подразумеваете под "большим".

Но числовое значение (uint32) каждого IP-адреса можно рассчитать с помощью:

d + 256 * c + 65536 * b + 16777216 * a

где a, b, c и d - это базовые 10 значений в формате IPv4: a.b.c.d

...