【发布时间】:2016-06-29 03:55:18
【问题描述】:
在我的应用程序中,当我将 IPv4 寻址存储到数据库时,它表示为 IPv6。我将 IPv4 和 IPv6 字符串都存储到数据库中。那么如何检查从数据库中获取的 IP 字符串是 IPv4 还是 IPv6。例如:IPv4: 192.168.98.62表示为 IPv6 0x00000000000000000000FFFFC0A8623E。我想通过 Mariadb 代码检查它。你能帮帮我吗!?
【问题讨论】:
在我的应用程序中,当我将 IPv4 寻址存储到数据库时,它表示为 IPv6。我将 IPv4 和 IPv6 字符串都存储到数据库中。那么如何检查从数据库中获取的 IP 字符串是 IPv4 还是 IPv6。例如:IPv4: 192.168.98.62表示为 IPv6 0x00000000000000000000FFFFC0A8623E。我想通过 Mariadb 代码检查它。你能帮帮我吗!?
【问题讨论】:
看起来像
0x00000000000000000000FFFF 在您的十六进制编码的 IP 地址之前。
下面的IP是C0A8623E,每个网络都有两位数。
您可以在 IPv6 字符串的开头进行字符串匹配。 示例:
IPString LIKE '0x00000000000000000000FFFF%'
这应该告诉您它是 v6 还是 v4 地址。
希望这会有所帮助。
最好的问候,
乔治
【讨论】:
IS_IPV4_MAPPED(UNHEX('2001CDBA000000000000000032579652'))
IS_IPV4_MAPPED(UNHEX('00000000000000000000FFFFC0A8623E'))