Рецепты программирования на PHP

  Главная   Учебник   Статьи   FAQ   Книги   Ссылки  

IP адрес, подсети, маски

Есть некоторые вещи которые я не способен считать в уме, но зато без каких либо затруднений могу написать программу для их расчета. Одна из них - это перерасчет подсетей.

Задача: из 255.255.255.255/24 получить 255.255.255.0/255.255.255.0 и 255.255.255.0-255.255.255.255

Решение:

$ip=explode("/","XXX.XXX.XXX.XXX/24");
$mask=0xFFFFFFFF;
for ($j=0;$j<32-$ip[1];$j++) $mask=$mask<<1;
$lip=ip2long($ip[0]);
print "<P>Результат: ".long2ip($lip&$mask)."/".long2ip($mask)."</P>";
print "<P>Результат: ".long2ip($lip&$mask)."-".long2ip(($lip&$mask)+(~$mask))."</P>";

Живой пример

Hosted by uCoz