IPv4 映射的 IPv6 地址解析

Posted

技术标签:

【中文标题】IPv4 映射的 IPv6 地址解析【英文标题】:IPv4-mapped IPv6 address parsing 【发布时间】:2021-07-23 13:57:00 【问题描述】:

ch 是否有一些方法可以将 IPv4 映射的 IPv6 地址转换为 IPv4? 我找到了将 IPv4 转换为 IPv4 映射的 IPv6 的唯一方法。 如果不是我应该用什么来解析它? 谢谢!

【问题讨论】:

【参考方案1】:
SELECT  reinterpret(
              reverse(
                 substr( IPv6StringToNum('::ffff:46.56.82.33'), 13, 4)
              ), 
        'IPv4') AS r;

┌─r───────────┐
│ 46.56.82.33 │
└─────────────┘
SELECT extract('::ffff:46.56.82.33', '\\d+\\.\\d+\\.\\d+\\.\\d+$')


┌─extract('::ffff:46.56.82.33', '\\d+\\.\\d+\\.\\d+\\.\\d+$')─┐
│ 46.56.82.33                                                 │
└─────────────────────────────────────────────────────────────┘

【讨论】:

【参考方案2】:

不,它没有。我不确定您的用例是什么,但一种选择是剥离 ::ffff:

SELECT replaceOne('::ffff:46.56.82.33', '::ffff:', '');

(

SELECT toIPv4(replaceOne('::ffff:46.56.82.33', '::ffff:', ''));

)

【讨论】:

以上是关于IPv4 映射的 IPv6 地址解析的主要内容,如果未能解决你的问题,请参考以下文章