跳到主要内容
uencoder

ZigZag Encoding

ZigZag 编码将有符号整数映射为无符号整数,使绝对值小的负数也占用少量字节,配合 Varint 实现高效变长编码。

用途

在变长整数编码中让小负数(如 -1)与小正数一样紧凑,避免负数因补码高位全 1 而膨胀。

机制

映射规则:n ≥ 0 → 2n,n < 0 → 2|n|-1。即 0→0, -1→1, 1→2, -2→3, 2→4…使整数按绝对值交替排列,小值映射为小无符号数。

用例

  • Protobuf sint32/sint64 变长编码
  • 紧凑有符号整数序列化
  • 数据库变长有符号列

相关工具

参考链接