Код, вероятно, должен быть примерно таким (я не запускал его, поэтому вам может потребоваться исправить небольшие проблемы, такие как небольшие ошибки компиляции или обработка переполнения):
uint GetIpValue(uint[] values)
{
return (values[0] << 24) +
(values[1] << 16) +
(values[2] << 8) +
(values[3]);
}
Это создает uint
значение, которое больше, если левая часть IP больше, как обычно определяется сравнение IP.
Теперь вы можете рассчитать каждое такое значение IP, чтобы увидеть, является ли оно ниже или больше другого значения IP.
Пример:
bool IsIpInRange(uint[] ip, uint[] ipStart, uint[] ipEnd)
{
uint ipValue = GetIpValue(ip);
return ipValue >= GetIpValue(ipStart) && ipValue <= GetIpValue(ipEnd);
}