Предполагая, что вы на самом деле не заботитесь о том, чтобы результирующий IP-адрес действовал в любой форме, у вас есть простая проблема.
Код для генерации адресов устанавливает параметры p3
и p2
до чего-то меньшего, чем 255
.p1
находится между 255
и 0
.
Реальная проблема заключается в том, что код, который превращает это в адрес, сдвигает эти значения.p1
на 24
, p2
на 16
и p3
на 8
.Понимая ограничение, применяемое в методе вызова, вы можете знать, что p1
, p2
и p3
никогда не превысят 255
, поэтому в этом случае, зная, что сдвиг 8
или более приведет к 0
, ни один из отдельных элементов адреса не приведет к значению, отличному от 0
, а последний октет всегда будет 0
, поэтому результирующий адрес будет 0.0.0.0
Если вы хотитечтобы предотвратить его 0.0.0.0
, первое, что нужно сделать, это удалить операции сдвига.Это поле будет по-прежнему сохранять последнее поле как 0
, поскольку оно никогда не устанавливается, но оно должно выдавать адреса.
Опять же, это не заботится о состоянии адресов, в результате вы получите широковещательную рассылку,многоадресные и локальные адреса с использованием этого метода.