This is a poc for huffman lossless compression for text / byte arrays
// Ideally, this is better for larger strings eg. the one in the examples/example.go file
import (
encoder "github.com/obbap1/huffman/encoder"
decoder "github.com/obbap1/huffman/decoder"
)
input := "hello"
encoderHuffman := encoder.Init(input)
compressedStr, huffmanNode, stats := encoderHuffman.Do()
// decode
decoderHuffman := decoder.Init(compressedStr, huffmanNode)
originalStr, stats := decoderHuffman.Do()
fmt.Printf("%s, %s and %s", compressedStr, originalStr, input)
The stats is a struct with keys
OriginalByteSize
: The original number of bytes before compression
CompressedByteSize
: The number of bytes after compression
PercentageSaved
: The percentage saved after compression
There are examples in the examples
folder.
You can run tests with go test ./...
.
You can also use act to run the tests from github actions