【发布时间】:2017-05-08 18:40:56
【问题描述】:
谁能帮助我手动将整数转换为 IP 地址?
我理解这个概念,但我很难弄清楚这个过程;号码 631271850,IP 地址为“37.160.113.170”。
我知道一个 IP 地址由四个八位字节组成,我必须手动将 IP 地址转换为数字的解决方案是:
def ip_to_num(ip_address)
array = ip_address.split('.').map(&:to_i)
((array[0] * 2**24) + (array[1] * 2**16) + (array[2] * 2**8) + (array[3]))
end
反向操作让我感到困惑。如何转换回来?
【问题讨论】:
-
里面的反斜杠在做什么?
2**2是正确的表示法。 -
为什么不使用现有的类呢? Ruby 带有ruby-doc.org/stdlib-2.4.1/libdoc/ipaddr/rdoc/index.html,还有github.com/dspinhirne/netaddr-rb。
-
新手,请原谅我的错误。
-
您只是将十进制表示(base-10)转换为 base-256 的表示,仅此而已。 IPv4 地址是一个 32 位数字,以 base-256 格式写成 4 个“数字”。
标签: arrays ruby ip-address