跳到主内容
UniKit

IPv6 地址压缩与展开

按照 RFC 5952 把 IPv6 地址压缩成最短的 `::` 形式或展开成完整 8 段,支持前导零、大小写归一与前缀长度校验。

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

结果

输入 IPv6 地址后自动压缩与展开

这个工具能做什么

  • 填写设备配置、DNS 记录或防火墙规则时,把 2001:0db8:0000:0000:0000:ff00:0042:8329 这类完整写法压成标准的最短形式。
  • 阅读日志或抓包里的 :: 缩写地址时反向展开,看清 8 段各是什么,便于逐个对照网段。
  • 对比两个 IPv6 地址是不是同一个:写成展开形式后肉眼就能逐段比较,不用琢磨 :: 代表几组零。
  • 统一大小写与前导零:把从不同系统复制来的地址(大写、带前导零)规范成 RFC 5952 的小写形式再入库。

示例

输入

2001:0db8:0000:0000:0000:ff00:0042:8329

输出

压缩形式 2001:db8::ff00:42:8329
展开形式 2001:db8:0:0:0:ff00:42:8329
完整形式(4 位补零) 2001:0db8:0000:0000:0000:ff00:0042:8329

输入带 /64 时还会多出「压缩形式 + 前缀」与「展开形式 + 前缀」两行,例如 fe80::1/64 会得到 fe80::1/64 与 fe80:0:0:0:0:0:0:1/64。

常见问题

为什么结果里只压缩了一段零?

按 RFC 5952,只有最长的连续零段才能写成 ::,而且长度必须达到 2 组以上。像 2001:db8:0:ff00:0:0:42:8329 里 0 只出现一次,就不会被压缩,因为 :: 至少代表两组零。

大小写和前导零会怎么处理?

十六进制字母统一输出小写(RFC 5952 推荐),每组的前导零在压缩/展开形式里去掉,只有「完整形式」保留 4 位补零,方便和日志、文档逐字比对。

支持 ::ffff:192.168.1.1 这种内嵌 IPv4 的写法吗?

支持。内嵌的 IPv4 部分(必须在地址末尾)会被换算成两组十六进制,所以 ::ffff:192.168.1.1 会展开成 ::ffff:c0a8:101。这也是日志里最常见的混合写法。

哪些写法会被判为非法?

段数不足 8 又没有 ::、出现两个以上的 ::、单组超过 4 位十六进制、含有 0–9a–f 之外的字符、前缀长度超过 128 或不是整数,都会报错。地址不写 /前缀 也能正常解析,只是不会输出带前缀的那两行。

转换在本地做吗?

是。纯字符串解析与格式化,在浏览器里完成,不发起任何网络请求,断网可用,输入的地址不会被记录。

关键词:ipv6压缩展开compressexpand地址rfc 5952前缀prefix

同类工具