1 package byteio 2 3 func zigzag(d int64) uint64 { 4 e := uint64(d) 5 if d < 0 { 6 e = ((^e) << 1) | 1 7 } else { 8 e <<= 1 9 } 10 return e 11 } 12 13 func unzigzag(i uint64) int64 { 14 j := i >> 1 15 if i&1 == 1 { 16 j = ^j 17 } 18 return int64(j) 19 } 20