@DontQuantum

Как посчитать количество комбинаций в диапазоне ip?

Есть вот такой вот диапазон - 217.28.250.232 - 217.28.252.215
1) 217.28.250.232 - 217.28.252.255 = 23
2) 217.28.251.0 - 217.28.252.255 = 255
3) 217.28.252.0 - 217.28.252.215 = 215
В сумме 493
Посчитать на листочке вроде бы не сложно. Но какую бы формулу для этого использовать ? 0_о
  • Вопрос задан
  • 192 просмотра
Решения вопроса 1
john36allTa
@john36allTa
alien glow of a dirty mind
На JS: (язык тут не был указан)
const ip2int = (ip) => 
	ip.split('.')
	.map( (value, index) => Number(value) * 256 ** (3-index))
	.reduce( (sum,value) => sum + value, 0);
const range = (from, to) => ip2int(to) - ip2int(from);
console.log(range("192.168.1.0", "192.168.1.255"));
// 255 - т.е. броадкаст адрес он тоже считает

Суть - перевести ip в целые числа и вычесть их
Универсальный и простейший алгоритм перевода ip в число, например 5.24.0.0:
5 * (256^3) + 24 * (256^2) + 0 * 256 + 0 = 85458944
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
dollar
@dollar
Делай добро и бросай его в воду.
Формулу с вашего листочка. Или вам принципиальна формула в одну строку?
Хотя, вы же хотите считать сумму диапазонов, небось произвольных (без маски), куда уж там в одну строку.

В общем, если есть алгоритм, значит можно сделать калькулятор. А будет ли там 10 строчек кода или 200 - не так важно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы