func ReadInt(r *bit.Reader) int { nbits := uint(0) zero, err := r.ReadBit(), r.Error() for err == nil && zero == 0 { nbits += 1 zero, err = r.ReadBit(), r.Error() } if nbits == 0 || err != nil { return 0 } x := r.ReadBits(nbits - 1) x = x<<1 | 1 x = bit.Reverse(x, nbits) sign := r.ReadBit() v := int(x) if sign == 1 { v = -v } return v }
func ReadUint(r *bit.Reader) uint { nbits := uint(0) zero, err := r.ReadBit(), r.Error() for err == nil && zero == 0 { nbits += 1 zero, err = r.ReadBit(), r.Error() } if nbits == 0 || err != nil { return 0 } x := r.ReadBits(nbits - 1) x = x<<1 | 1 x = bit.Reverse(x, nbits) return uint(x) }