Ruby: 如何将ipv6 uo地址转换成ipv4 ip地址?
Ruby: How to convert ipv6 uo address to ipv4 ip address?
使用 ipv4_mapped 可以很容易地将 ipv4 转换为 ipv6。但是周围的其他人呢?
我在 IpAddr 文档中没有找到这样做的方法。
首先,重要的是要了解将大多数 IPv6 地址转换为 IPv4 地址是不可能的(出于多种原因,最明显的是无法将 128 位数字放入 32 位)。唯一可以转换为 IPv4 的 IPv6 地址是从 IPv4 地址映射的地址(例如 IPAddr#ipv4_mapped
生成的地址)。为此,我们有 IPAddr#native
:
require "ipaddr"
ip = IPAddr.new("192.168.2.128")
ipv6 = ip.ipv4_mapped
puts ipv6.native
# => 192.168.2.128
使用 ipv4_mapped 可以很容易地将 ipv4 转换为 ipv6。但是周围的其他人呢?
我在 IpAddr 文档中没有找到这样做的方法。
首先,重要的是要了解将大多数 IPv6 地址转换为 IPv4 地址是不可能的(出于多种原因,最明显的是无法将 128 位数字放入 32 位)。唯一可以转换为 IPv4 的 IPv6 地址是从 IPv4 地址映射的地址(例如 IPAddr#ipv4_mapped
生成的地址)。为此,我们有 IPAddr#native
:
require "ipaddr"
ip = IPAddr.new("192.168.2.128")
ipv6 = ip.ipv4_mapped
puts ipv6.native
# => 192.168.2.128