处理 IPv4 和 IPv6 地址的函数
IPv4NumToString
接收一个 UInt32 数字,将其解释为一个大端格式的 IPv4 地址。返回一个字符串,包含与之对应的 IPv4 地址,格式为 A.B.C.d(以点分隔的十进制数字)。
别名: INET_NTOA
。
IPv4StringToNum
IPv4NumToString 的反向函数。如果 IPv4 地址格式无效,则抛出异常。
别名: INET_ATON
。
IPv4StringToNumOrDefault(s)
与 IPv4StringToNum
相同,但如果 IPv4 地址格式无效,则返回 0。
IPv4StringToNumOrNull(s)
与 IPv4StringToNum
相同,但如果 IPv4 地址格式无效,则返回 null。
IPv4NumToStringClassC(num)
类似于 IPv4NumToString,但使用 xxx 替代最后一个八位字节。
示例:
由于使用 'xxx' 是极其不寻常的,未来可能会有所更改。我们建议您不要依赖此片段的确切格式。
IPv6NumToString(x)
接受一个包含 IPv6 地址的 FixedString(16) 值,格式为二进制。返回一个字符串,包含该地址的文本格式。 IPv6 映射的 IPv4 地址以格式 ::ffff:111.222.33.44 输出。
别名: INET6_NTOA
。
示例:
IPv6StringToNum
IPv6NumToString 的反向函数。如果 IPv6 地址格式无效,则抛出异常。
如果输入字符串包含有效的 IPv4 地址,则返回其 IPv6 等效地址。 HEX 可以是大写或小写。
别名: INET6_ATON
。
语法
参数
string
— IP 地址。 String。
返回值
- IPv6 地址,格式为二进制。 FixedString(16)。
示例
查询:
结果:
参见
IPv6StringToNumOrDefault(s)
与 IPv6StringToNum
相同,但如果 IPv6 地址格式无效,则返回 0。
IPv6StringToNumOrNull(s)
与 IPv6StringToNum
相同,但如果 IPv6 地址格式无效,则返回 null。
IPv4ToIPv6(x)
接受一个 UInt32
数字。将其解释为一个大端格式的 IPv4 地址 big endian。返回一个包含 IPv6 地址的 FixedString(16)
值,其格式为二进制。示例:
cutIPv6(x, bytesToCutForIPv6, bytesToCutForIPv4)
接受一个包含 IPv6 地址的 FixedString(16) 值,格式为二进制。返回一个字符串,包含以文本格式删除指定字节数后的地址。例如:
IPv4CIDRToRange(ipv4, Cidr)
接收一个 IPv4 和一个 UInt8 值,包含 CIDR。返回一个元组,包含两个 IPv4 地址,分别表示子网的下限和上限范围。
IPv6CIDRToRange(ipv6, Cidr)
接收一个 IPv6 和一个 UInt8 值,包含 CIDR。返回一个元组,包含两个 IPv6 地址,分别表示子网的下限和上限范围。
toIPv4
将字符串或 UInt32 格式的 IPv4 地址转换为 IPv4 类型。
类似于 IPv4StringToNum
和 IPv4NumToString 函数,但支持字符串和无符号整数数据类型的输入参数。
语法
参数
x
— IPv4 地址。String
、UInt8/16/32
。
返回值
- IPv4 地址。 IPv4。
示例
查询:
结果:
查询:
结果:
查询:
结果:
toIPv4OrDefault
与 toIPv4
相同,但如果 IPv4 地址格式无效,则返回 0.0.0.0
(0 IPv4)或提供的 IPv4 默认值。
语法
参数
返回值
string
转换为当前 IPv4 地址。 String。
示例
查询:
结果:
toIPv4OrNull
与 toIPv4
相同,但如果 IPv4 地址格式无效,则返回 null。
语法
参数
string
— IP 地址。 String。
返回值
string
转换为当前 IPv4 地址,如果string
是无效地址,则返回 null。 String。
示例
查询:
结果:
toIPv4OrZero
与 toIPv4
相同,但如果 IPv4 地址格式无效,则返回 0.0.0.0
。
语法
参数
string
— IP 地址。 String。
返回值
string
转换为当前 IPv4 地址,如果string
是无效地址,则返回0.0.0.0
。 String。
示例
查询:
结果:
toIPv6
将字符串或 UInt128 格式的 IPv6 地址转换为 IPv6 类型。对于字符串,如果 IPv6 地址格式无效,则返回空值。
类似于 IPv6StringToNum 和 IPv6NumToString 函数,这些函数可以在二进制格式(即 FixedString(16)
)之间转换 IPv6 地址。
如果输入字符串包含有效的 IPv4 地址,则返回其 IPv6 等效地址。
语法
参数
返回值
- IP 地址。 IPv6。
示例
查询:
结果:
查询:
结果:
toIPv6OrDefault
与 toIPv6
相同,但如果 IPv6 地址格式无效,则返回 ::
(0 IPv6)或提供的 IPv6 默认值。
语法
参数
返回值
- IPv6 地址 IPv6,否则如果
string
格式无效则返回::
或提供的可选默认值。
示例
查询:
结果:
toIPv6OrNull
与 toIPv6
相同,但如果 IPv6 地址格式无效,则返回 null。
语法
参数
string
— IP 地址。 String。
返回值
- IP 地址。 IPv6,如果
string
不是有效格式,则返回 null。
示例
查询:
结果:
toIPv6OrZero
与 toIPv6
相同,但如果 IPv6 地址格式无效,则返回 ::
。
语法
参数
string
— IP 地址。 String。
返回值
- IP 地址。 IPv6,如果
string
不是有效格式,则返回::
。
示例
查询:
结果:
IPv6StringToNumOrDefault(s)
与 toIPv6
相同,但如果 IPv6 地址格式无效,则返回 0。
IPv6StringToNumOrNull(s)
与 toIPv6
相同,但如果 IPv6 地址格式无效,则返回 null。
isIPv4String
判断输入字符串是否为 IPv4 地址。如果 string
为 IPv6 地址,则返回 0
。
语法
参数
string
— IP 地址。 String。
返回值
- 如果
string
是 IPv4 地址,则返回1
,否则返回0
。 UInt8。
示例
查询:
结果:
isIPv6String
判断输入字符串是否为 IPv6 地址。如果 string
为 IPv4 地址,则返回 0
。
语法
参数
string
— IP 地址。 String。
返回值
- 如果
string
是 IPv6 地址,则返回1
,否则返回0
。 UInt8。
示例
查询:
结果:
isIPAddressInRange
判断一个 IP 地址是否包含在以 CIDR 表示的网络中。如果为真,则返回 1
,否则返回 0
。
语法
该函数接受以字符串表示的 IPv4 和 IPv6 地址(以及网络)。如果 IP 地址的版本与 CIDR 不匹配,则返回 0
。
参数
address
— IPv4 或 IPv6 地址。 String、IPv4、IPv6、Nullable(String)
、Nullable(IPv4)
和Nullable(IPv6)
。prefix
— 以 CIDR 表示的 IPv4 或 IPv6 网络前缀。 String。
返回值
1
或0
。 UInt8。
示例
查询:
结果:
查询:
结果:
查询:
结果: