+
Skip to content

blacktop/lzss

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

License

Stars

Watchers

Forks

Packages

No packages published
点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载