无法找到它,如果重复,请提前道歉。
我想转换地址,
0000000000000000FFFF00000B79290A
成人类可读的形式。注意,虽然它是IPv6,但它实际上是嵌入了IPv4地址,因此更优选地将其转换为:
10.41.121.11
我从/ proc / net / tcp读取了这种类型的地址,并想解析它。
谢谢。
答案 0 :(得分:4)
Ruby附带了IPAddr类,可以将IPv4和IPv6字符串解析为对象。还有NetAddr非常强大。尽可能使用预先发明的车轮,因为它们经过了充分测试并包含有用的方法:
C:\mingw_dev_lib\sdl\lib
有必要将字符串转换为冒号分隔的字段,并将其包装在require 'ipaddr'
IPAddr.new "[#{'0000000000000000FFFF00000B79290A'.scan(/.{4}/).join(':')}]"
#<IPAddr: IPv6:0000:0000:0000:0000:ffff:0000:0b79:290a/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>
中告诉IPAddr将其视为IPv6地址:
[...]
使用NetAddr:
'0000000000000000FFFF00000B79290A'.scan(/.{4}/)
=> [
[0] "0000",
[1] "0000",
[2] "0000",
[3] "0000",
[4] "FFFF",
[5] "0000",
[6] "0B79",
[7] "290A"
]
'0000000000000000FFFF00000B79290A'.scan(/.{4}/).join(':')
=> "0000:0000:0000:0000:FFFF:0000:0B79:290A"