普贤教程 › 包参考
ipaddr 包
IP 地址与 CIDR
| 项 | 值 |
|---|---|
| 包名 | ipaddr |
| 版本 | 0.2.0 |
| 可用版本 | 0.1.0 / 0.2.0 |
| 入口 | ipaddr.px |
| 分类 | 网络与协议 |
| 文件数 / 行数 | 1 / 402 |
安装与引入
bash
pxpkg init # 首次 pxpkg add ipaddr@0.2.0 pxpkg install
px
import ipaddr所属分类教程:网络与协议
公开接口
| 函数 | 参数 |
|---|---|
ipv4_parse | s |
ipv4_to_str | n |
cidr_parse | cidr |
cidr_valid | cidr |
ipv4_in_cidr | ip, cidr |
ipv4_cidr_network | cidr |
ipv6_parse | s |
ipv6_to_str | h |
ipv6_in_cidr | ip, cidr |
ipv6_is_ipv4_mapped | h |
ipv6_extract_v4 | h |
ip_is_ipv4 | s |
ip_is_ipv6 | s |
ip_valid | s |
其余 18 个 def(内部与辅助,可直接调用但不属稳定接口)
| 函数 | 参数 |
|---|---|
ip_pow2 | k |
ip_find | s, sub |
ip_find_from | s, sub, start |
ip_is_digit | c |
ip_parse_int | s |
ipv4_cidr_split | cidr |
ipv4_mask | prefix |
ipv4_cidr_broadcast | cidr |
ipv4_cidr_host_count | cidr |
ip_hexval | c |
ip_hex_digit | v |
ip_hex | n |
ip_hex4 | n |
ip_hex_to_int | s |
ip_has_dot | s |
ip_v4_to_hextet_strs | v4str |
ip_hextets | parts, count_total |
ip_hextets_str | h, start, end |
包内说明(源码头注释)
text
============================================================ 普贤生态库:registry/ipaddr —— IP 地址与 CIDR ------------------------------------------------------------ 纯函数库(无 IO、无状态),编译(px build)与解释(px run)双模式一致。 对齐 Python ipaddress / Go net/netip 心智: ipv4_parse(s) → Ok(int 0..2^32-1) | Err ipv4_to_str(n) → Ok("a.b.c.d") | Err ip_valid(s)/ip_is_ipv4(s)/ip_is_ipv6(s) → bool ipv4_in_cidr(ip, cidr) → bool "192.168.1.100" in "192.168.1.0/24" cidr_parse(cidr) → Ok({addr, prefix}) | Err(IPv4) cidr_valid(cidr) → bool(IPv4) ipv4_cidr_network/broadcast/host_count(cidr) → Ok(...) | Err ipv6_parse(s) → Ok([8 个 hextet int]) | Err(支持 :: 压缩 + IPv4 内嵌) ipv6_to_str(h) → Ok(压缩规范串) | Err ipv6_in_cidr(ip6, cidr6) → bool ipv6_is_ipv4_mapped(h) → bool 检测 ::ffff:0:0/96 前缀 ipv6_extract_v4(h) → Ok("a.b.c.d") | Err 从 IPv4-mapped 提取 IPv4 说明: - IPv4 宽严:必须 4 段纯数字、0-255;允许前导零("01.2.3.4" = 1.2.3.4) - IPv6 仅小写/大写 hex;支持 "::"(至多一次) - 新增:IPv4 内嵌尾段(RFC 4291) "::ffff:192.168.1.1"(IPv4-mapped)和 "::192.168.1.1"(IPv4-compatible) - IPv6 压缩规则:压缩最长连续零段(长度≥2,取首个最长段) ============================================================