Netmask to CIDR in ruby

前端 未结 7 947
灰色年华
灰色年华 2020-12-29 11:13

I\'ve been using the ip-address gem and it doesn\'t seem to have the ability to convert from a netmask of the form

255.255.255.0 

into the

7条回答
  •  难免孤独
    2020-12-29 11:40

    Here is the quick and dirty way

    require 'ipaddr'
    puts IPAddr.new("255.255.255.0").to_i.to_s(2).count("1")
    

    There should be proper function for that, I couldn't find that, so I just count "1"

    If you're going to be using the function in a number of places and don't mind monkeypatching, this could help:

    IPAddr.class_eval
      def to_cidr
        "/" + self.to_i.to_s(2).count("1")
      end
    end
    

    Then you get

    IPAddr.new('255.255.255.0').to_cidr
    # => "/24"
    

提交回复
热议问题