Dot quad mask to CIDR
def dqtocidr( mask )
bitcount = 0
mask.split('.').each { |octet|
o = octet.to_i
bitcount += (o & 1) and (o >>= 1) until o == 0
}
return bitcount
end
irb(main):016:0> dqtocidr(‘128.0.0.0’) => 1
irb(main):017:0> dqtocidr(‘192.0.0.0’) => 2
irb(main):018:0> dqtocidr(‘224.0.0.0’) => 3
irb(main):019:0> dqtocidr(‘240.0.0.0’) => 4
irb(main):020:0> dqtocidr(‘248.0.0.0’) => 5
irb(main):021:0> dqtocidr(‘252.0.0.0’) => 6
irb(main):022:0> dqtocidr(‘254.0.0.0’) => 7
irb(main):023:0> dqtocidr(‘255.0.0.0’) => 8
Posted in Ruby | no comments |