Initial commit
This commit is contained in:
21
encode.go
Normal file
21
encode.go
Normal file
@@ -0,0 +1,21 @@
|
||||
package coding
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"github.com/icza/bitio"
|
||||
"github.com/samber/lo"
|
||||
)
|
||||
|
||||
func Encode(h *Heap, msg []byte) []byte {
|
||||
buf := &bytes.Buffer{}
|
||||
w := bitio.NewWriter(buf)
|
||||
|
||||
for _, b := range msg {
|
||||
index := h.IncrementSymbol(b)
|
||||
code := codes[index]
|
||||
lo.Must0(w.WriteBits(uint64(code.value), uint8(code.bits)))
|
||||
}
|
||||
|
||||
lo.Must0(w.Close())
|
||||
return buf.Bytes()
|
||||
}
|
||||
Reference in New Issue
Block a user