Szopen Xiao

网络掩码转换为CIDR算法

2014-12-25

CIDR是指无类别域间路由,就是指当使用类似192.168.0.1/24中的24这个值,这个值的定义了本网络的IP地址前缀的位数,对于192.168.0.1/24这个网络,他定义的是本网络内IP的前24位与192.168.0.1的前24位相同,对于216.239.32.0/19这个网络,标识了本网络前19位与216.239.32.0的前19位相同。这里的位数是指二进制位数。
目前流行使用这个值来代替掩码,以避免子网码导致的问题,他们之间的简单转换算法如下:

(2CIDR - 1) « (32-CIDR)

php计算如下:

(pow(2,$CIDR)-1) << (32 - $CIDR) ;
echo long2ip((pow(2,24)-1) << (32-24)); //255.255.255.0
echo long2ip((pow(2,19)-1) << (32-19)); //255.255.224.0
comments powered by Disqus