你如何判断ip,比如说62.156.244.13,是否在62.0.0.062.255.255.255之间

推荐答案

>> require "ipaddr"
=> true
>> low = IPAddr.new("62.0.0.0").to_i
=> 1040187392
>> high = IPAddr.new("62.255.255.255").to_i
=> 1056964607
>> ip = IPAddr.new("62.156.244.13").to_i
=> 1050473485
>> (low..high)===ip
=> true

如果给你的是网络而不是起始地址和结束地址,那就更简单了

>> net = IPAddr.new("62.0.0.0/8")
=> #<IPAddr: IPv4:62.0.0.0/255.0.0.0>
>> net===IPAddr.new("62.156.244.13")
=> true

IPAddr还将用于IPv6地址

>> low = IPAddr.new('1::')
=> #<IPAddr: IPv6:0001:0000:0000:0000:0000:0000:0000:0000/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>
>> high = IPAddr.new('2::')
=> #<IPAddr: IPv6:0002:0000:0000:0000:0000:0000:0000:0000/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>
>> (low..high)===IPAddr.new('1::1')
=> true

Ruby相关问答推荐

如何使用 gsub 删除返回字符串中的/和/i?

如何返回此 OOP Ruby 代码最后一行中的变量?

如何使用 HEREDOC 作为参数传递给方法?

设计登录根路由rails 3

如何从 DateTime 值中删除区域?

是否应该在生产时缩小服务器代码?

Sinatra + Bundler?

如何判断 Ruby 数组是否包含多个值之一?

出于调试目的,如何打印有关 NET:HTTPRequest 的信息?

判断 Ruby Gem 的可用性

Ruby - net/http - 重定向

如何从 Gemfile 安装 gem?

无法在 OSX Lion 上使用 RVM 安装 Ruby 企业版

Ruby 中方法名称的限制是什么?

铲子 (<<) 运算符如何在 Ruby 哈希中工作?

从 1 开始循环

Ruby 中的标准文件命名约定

Mountain Lion rvm 安装 1.8.7 x11 错误

如何在没有警告的情况下重新定义 Ruby 常量?

Ruby:是否可以在模块中定义类方法?