Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

lzss

GoDoc License

LZSS compression package for Go.


Install

As a Go package

go get github.com/blacktop/lzss

As a CLI tool

go install github.com/blacktop/lzss/cmd@v0.1.6

CLI Usage

# Compress a file
lzss -c input.txt                    # creates input.txt.lzss

# Decompress a file  
lzss -d input.txt.lzss               # creates input.txt

# Custom output file
lzss -c -o compressed.lzss input.txt
lzss -d -o output.txt input.lzss

# Show help
lzss -h

Examples

Compression

import (
    "io/ioutil"
    "log"

    "github.com/blacktop/lzss"
    "github.com/pkg/errors"
)

func main() {
    // Compress data
    data, err := ioutil.ReadFile("input.txt")
    if err != nil {
        log.Fatal(errors.Wrap(err, "failed to read input file"))
    }

    compressed := lzss.Compress(data)
    err = ioutil.WriteFile("compressed.bin", compressed, 0644)
    if err != nil {
        log.Fatal(errors.Wrap(err, "failed to write compressed file"))
    }
}

Decompression

import (
    "io/ioutil"
    "log"

    "github.com/blacktop/lzss"
    "github.com/pkg/errors"
)

func main() {
    dat, err := ioutil.ReadFile("compressed.bin")
    if err != nil {
        log.Fatal(errors.Wrap(err, "failed to read compressed file"))
    }

    decompressed := lzss.Decompress(dat)
    err = ioutil.WriteFile("compressed.bin.decompressed", decompressed, 0644)
    if err != nil {
        log.Fatal(errors.Wrap(err, "failed to decompress file"))
    }
}

NOTE: I believe lzss expects the data to be word aligned.

Credit

Converted to Golang from https://github.com/opensource-apple/kext_tools/blob/master/compression.c

License

MIT Copyright (c) 2018-2025 blacktop

About

LZSS compression package for Go.

Topics

Resources

Stars

10 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages