在Ruby中,我想获取我的本地IP地址并将其转换为我的网络ID(例如192.168.1.1到192.168.1.0)

require "socket"
local_ip = UDPSocket.open {|s| s.connect("64.233.187.99", 1); s.addr.last}

这将为我提供本地IP,但是如何删除最后一个八位字节到dot(.)?

最佳答案

快速而肮脏的方式就像

"192.168.1.1".rpartition(".")[0]
=> "192.168.1"

但是如果您知道子网掩码,或者您正在24位(255.255.255.0)以外的子网中运行,则应使用IPAddr模块,因为这些子网的网络可能会因子网而异。
> require 'IPAddr'
=> true
>
> IPAddr.new("64.233.187.99/24").to_s
=> "64.233.187.0"

> IPAddr.new("64.233.187.99/20").to_s
=> "64.233.176.0"

引用:
  • http://ruby-doc.org/stdlib/libdoc/ipaddr/rdoc/index.html
  • 09-05 00:17