package atom import ( "io" "fmt" "bytes" ) type GolombBitReader struct { R io.Reader buf [1]byte left byte } func (self *GolombBitReader) ReadBit() (res uint, err error) { if self.left == 0 { if _, err = self.R.Read(self.buf[:]); err != nil { return } self.left = 8 } self.left-- res = uint(self.buf[0]>>self.left)&1 return } func (self *GolombBitReader) ReadBits(n int) (res uint, err error) { for i := 0; i < n; i++ { var bit uint if bit, err = self.ReadBit(); err != nil { return } res |= bit<