exp-golomb

Encoder/decoder for Exponential-Golomb coding.

Using the Wikipedia example:

|Number | Bit pattern | |-------|-------------| |0 | 1 | |1 | 010 | |2 | 011 | |3 | 00100 | |4 | 00101 | |5 | 00110 | |6 | 00111 | |7 | 0001000 | |8 | 000100 |

```rust use exp_golomb::{ExpGolombDecoder, ExpGolombEncoder};

let mut buf = [0u8; 6]; let mut writer = ExpGolombEncoder::new(&mut buf, 0).unwrap(); for i in 0..=8 { writer.put_unsigned(i).unwrap(); } writer.close();

assert_eq!( buf, [0b10100110, 0b01000010, 0b10011000, 0b11100010, 0b00000100, 0b10000000] );

let mut reader = ExpGolombDecoder::new(&buf, 0).unwrap(); for i in 0..=8 { asserteq!(reader.nextunsigned(), Some(i)); } ```