(bits uint64, n int)
| 68 | } |
| 69 | |
| 70 | func (self *Writer) WriteBits64(bits uint64, n int) (err error) { |
| 71 | if self.n+n > 64 { |
| 72 | move := uint(64 - self.n) |
| 73 | mask := bits >> move |
| 74 | self.bits = (self.bits << move) | mask |
| 75 | self.n = 64 |
| 76 | if err = self.FlushBits(); err != nil { |
| 77 | return |
| 78 | } |
| 79 | n -= int(move) |
| 80 | bits ^= (mask << move) |
| 81 | } |
| 82 | self.bits = (self.bits << uint(n)) | bits |
| 83 | self.n += n |
| 84 | return |
| 85 | } |
| 86 | |
| 87 | func (self *Writer) WriteBits(bits uint, n int) (err error) { |
| 88 | return self.WriteBits64(uint64(bits), n) |