Skip to content

cstdvd/lz77

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LZ77

Lempel, Ziv Encoding and Decoding

Description

LZ77 is a lossless data compression algorithm published by Abraham Lempel and Jacob Ziv in 1977. It is a dictionary coder and maintains a sliding window during compression.

The sliding window is divided in two parts:

  • Search-Buffer (dictionary - encoded data)
  • Lookahead (uncompressed data).

LZ77 algorithms achieve compression by addressing byte sequences from former contents instead of the original data. All data will be coded in the same form (called token):

  • Address to already coded contents;
  • Sequence length;
  • First deviating symbol.

The window is contained in a fixed size buffer.

The match between SB and LA is made by a binary tree, implemented in an array.

Reading and writing on the encoded file it is made via the bitIO library, implemented in the project. It allows to read and to write on the file bit-per-bit instead byte-per-byte as usual.

Usage

Syntax:

./lz77 <options>

Options:

-c: compression mode
-d: decompression mode
-i <filename>: input file
-o <filename>: output file
-l <value>: lookahead size (default 15)
-s <value>: searchbuffer size (default 4095)
-h: help

The lookahead and searchbuffer sizes are optional. If the two options are not set, default values are used.

About

LZ77 compressor and decompressor

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published