2013-08-18 4 views
0

Есть ли способ получить количество IPv6-адресов из CIDR Ipv6?Получение числа IPv6-адресов из Ipv6 CIDR в PHP

, например: CIDR: 2403: 3E00 ::/32 => нужно получить число адресов IPv6: 79228162514264337593543950336

+0

Можно ли добавить функцию на этой странице (PHP5 вычисляет диапазон IPv6 от префикса cidr) - http://stackoverflow.com/questions/10085266/php5-calculate-ipv6-range-from-cidr-prefix/10086404 # 10086404 что дополнительное возвращает количество IP-адресов в CIDR Префикс: ... Первый: ... Последний: .. и NumberIP: ...? – user2253402

ответ

0

адрес IPv6 имеет 128 битов, из которых (несколько упрощенный) ряд которые посвящены к сетевому адресу, а остальные - адресам хостов.

В вашем случае 32 бита посвящены сетевой части (/32), поэтому остальные 96 предназначены для адресов хостов.

2^(128-32) = 2^96 = 79228162514264337593543950336 hosts 
+0

Для поддержания точности вы можете использовать bcpow для этого 'echo bcpow (2, 128-32)," \ n ";' – Orangepill

0
2^(128-32) = 2^96 = 79228162514264337593543950336 

неправильно, вы все равно должны

79228162514264337593543950336 - 1 = 79228162514264337593543950335 hosts 

PS. жаль, что я не могу прокомментировать это ответ Йоахима из-за репутации, поэтому я не очень заинтересован в stackoverflow.