Ash*_*z87 1 ruby arrays ip-address
任何人都可以协助我手动将整数转换为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
Run Code Online (Sandbox Code Playgroud)
反过来让我感到困惑.我该如何转换回来?
IP只是一个32位整数,表示一个4字节的数组:
[631271850].pack('N').unpack('CCCC').join('.')
=> "37.160.113.170"
Run Code Online (Sandbox Code Playgroud)
只是为了好玩,另一种将IP转换为int的方法:
"37.160.113.170".split(".").map(&:to_i).pack('CCCC').unpack('N')[0]
=> 631271850
Run Code Online (Sandbox Code Playgroud)