如何将Ruby中的ipaddr对象转换为netaddr的CIDR类型?
- 内容介绍
- 文章标签
- 相关推荐
本文共计285个文字,预计阅读时间需要2分钟。
在Ruby 2.0.0中,若要将IPAddr类型的对象转换成NetAddr::CIDR,可以按照以下步骤操作:
首先,确保你已经安装了`net-dns`和`net-ip`这两个 gems,因为它们提供了处理IP地址的功能。
rubyrequire 'net-dns'require 'net-ip'
创建一个IPAddr对象ipaddr_obj=IPAddr.new('1a03:a240:0100::/56')netaddr_obj=NetAddr::CIDR.create(ipaddr_obj)
创建另一个IPAddr对象ipaddr_obj2=IPAddr.new('192.126.8.1/24')netaddr_obj2=NetAddr::CIDR.create(ipaddr_obj2)
输出结果puts netaddr_objputs netaddr_obj2
上述代码首先创建了两个IPAddr对象,然后使用`NetAddr::CIDR.create`方法将它们转换为NetAddr::CIDR类型的对象,并打印出来。这样就可以在不直接使用netmask(/前缀)的情况下处理CIDR了。
使用 ruby 2.0.0,如何将IPAddr类型的对象转换为NetAddr :: CIDR?例:
IPAddr.new("1a03:a240:0100::/56") IPAddr.new("192.1268.1.0/24")
这不起作用,因为我不尊重netmask /前缀:
NetAddr::CIDR.create(IPAddr.new("1a03:a240:0100::/56").to_s).to_s => "1a03:a240:0100:0000:0000:0000:0000:0000/128" 这是我们在 Discourse使用的另一种解决方案
class IPAddr def to_cidr_s if @addr mask = @mask_addr.to_s(2).count('1') "#{to_s}/#{mask}" else nil end end end
本文共计285个文字,预计阅读时间需要2分钟。
在Ruby 2.0.0中,若要将IPAddr类型的对象转换成NetAddr::CIDR,可以按照以下步骤操作:
首先,确保你已经安装了`net-dns`和`net-ip`这两个 gems,因为它们提供了处理IP地址的功能。
rubyrequire 'net-dns'require 'net-ip'
创建一个IPAddr对象ipaddr_obj=IPAddr.new('1a03:a240:0100::/56')netaddr_obj=NetAddr::CIDR.create(ipaddr_obj)
创建另一个IPAddr对象ipaddr_obj2=IPAddr.new('192.126.8.1/24')netaddr_obj2=NetAddr::CIDR.create(ipaddr_obj2)
输出结果puts netaddr_objputs netaddr_obj2
上述代码首先创建了两个IPAddr对象,然后使用`NetAddr::CIDR.create`方法将它们转换为NetAddr::CIDR类型的对象,并打印出来。这样就可以在不直接使用netmask(/前缀)的情况下处理CIDR了。
使用 ruby 2.0.0,如何将IPAddr类型的对象转换为NetAddr :: CIDR?例:
IPAddr.new("1a03:a240:0100::/56") IPAddr.new("192.1268.1.0/24")
这不起作用,因为我不尊重netmask /前缀:
NetAddr::CIDR.create(IPAddr.new("1a03:a240:0100::/56").to_s).to_s => "1a03:a240:0100:0000:0000:0000:0000:0000/128" 这是我们在 Discourse使用的另一种解决方案
class IPAddr def to_cidr_s if @addr mask = @mask_addr.to_s(2).count('1') "#{to_s}/#{mask}" else nil end end end

