如何解决Ruby:将 CIDR 转换为网络掩码
给定像 192.168.1.0/24
这样的网络定义,我想将 /24
CIDR 转换为四位网络掩码,在本例中为 255.255.255.0
。
不应使用额外的宝石。
解决方法
这里的实际方法非常简单:
for i in df:
db=df[i]
vmin=db.loc['posUp']
vmax=db.loc['posDown']
db=db[(db>vmin)&(db<vmax)]
可以为您提供以下结果的地方:
def mask(n)
[ ((1 << 32) - 1) << (32 - n) ].pack('N').bytes.join('.')
end
,
Ruby 的 IPAddr
似乎没有公开此功能。但是,它包含一个名为 @mask_addr
的私有实例变量,其中包含所需掩码的整数值。
通过将其转换回另一个 IPAddr
实例,可以将其表示为四位子掩码:
require "ipaddr"
net = IPAddr.new("192.168.1.0/24")
subnet = IPAddr.new(net.instance_variable_get(:@mask_addr),Socket::AF_INET).to_s
# => "255.255.255.0"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。