Multi-byte symbols

This commit is contained in:
Ian Gulliver
2023-12-31 16:09:35 -08:00
parent 04f1ef728f
commit 2f88ac2708
5 changed files with 107 additions and 33 deletions

View File

@@ -13,8 +13,9 @@ func Encode(st *state.State, msg []byte) []byte {
buf := &bytes.Buffer{}
w := bitio.NewWriter(buf)
for _, b := range msg {
index := st.IncrementSymbol(b)
for i := 0; i < len(msg); {
l, index := st.IncrementSymbol(msg[i:])
i += l
code := codes.CodeForIndex(index)
lo.Must0(w.WriteBits(uint64(code.Value), uint8(code.Bits)))
}