为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:
【CPU】:
【问题描述】*:HEX(SF_INET_SORT('::1')) 的转换规则是什么,为什么HEX(SF_INET_SORT('::1')) 转换后比 HEX(SF_INET_SORT('127.0.0.1'))大
把HEX去掉后,看看查询结果,应该能看出差别
select SF_INET_SORT('127.0.0.1')
结果为:
A127000000001032127000000001
select SF_INET_SORT('192.168.44.10')
结果为:
A192168044010032192168044010
select SF_INET_SORT('::1')
结果为:
B0000000000000000000000000000000112800000000000000000000000000000001
select SF_INET_SORT('1b24::8d10:8867:2410:6450')
结果为:
B1B240000000000008D108867241064501281B240000000000008D10886724106450
能粗略看出,IPv4地址结果第一字节为A,IPv6地址结果第一字节为B,这也是为啥::1比127.0.0.1的转换结果大的原因。
127.0.0.1 会被映射为 IPv6 的 兼容地址:::ffff:127.0.0.1 → 中间部分出现了 FFFF
::1 是原生 IPv6 地址 → 全部高位为 0
从十六进制来看,FFFF > 0000,因此 127.0.0.1 的结果“更大”
::1 00000000000000000000000000000001
127.0.0.1 00000000000000000000FFFF7F000001