Ruby:将CIDR转换为网络掩码

Ruby:将CIDR转换为网络掩码,ruby,ip-address,subnet,cidr,netmask,Ruby,Ip Address,Subnet,Cidr,Netmask,给定网络定义,如192.168.1.0/24,我想将/24CIDR转换为四位网络掩码,在本例中为255.255.255.0 不应使用额外的gems。Ruby的IPAddr似乎没有公开此功能。但是,它包含一个名为@mask\u addr的私有实例变量,该变量包含所需掩码的整数值 通过将其转换回另一个IPAddr实例,可以将其表示为四位子掩码: 需要“ipaddr” net=IPAddr.new(“192.168.1.0/24”) subnet=IPAddr.new(net.instance\u v

给定网络定义,如
192.168.1.0/24
,我想将
/24
CIDR转换为四位网络掩码,在本例中为
255.255.255.0


不应使用额外的gems。

Ruby的
IPAddr
似乎没有公开此功能。但是,它包含一个名为
@mask\u addr
的私有实例变量,该变量包含所需掩码的整数值

通过将其转换回另一个
IPAddr
实例,可以将其表示为四位子掩码:

需要“ipaddr”
net=IPAddr.new(“192.168.1.0/24”)
subnet=IPAddr.new(net.instance\u variable\u get(:@mask\u addr),Socket::AF\u INET).to\s
# => "255.255.255.0"

这里的实际方法非常简单:

def掩码(n)
[ ((1  "255.255.0.0"
面具(22)
# => "255.255.252.0"

这里的字符串
net
如何有一个实例变量?对于不习惯位移位的人,常量值方法
((1