#compression-decompression #huffman-coding #decompression

bin+lib huff

基于 huff_coding crate 的示例压缩/解压缩 CLI 软件

3 个稳定版本

1.0.6 2021年3月3日
1.0.5 2021年2月28日
1.0.4 2021年2月27日
1.0.3 2021年1月21日
1.0.2 2021年1月20日

#341 in 压缩

GPL-2.0-or-later

110KB
1.5K SLoC

huff

Crate

License

基于 huff_coding crate 的示例压缩/解压缩 CLI 软件。

用法

huff [FLAGS] [OPTIONS] <SRC_FILE> [DST_FILE]

参数

<SRC_FILE>    
<DST_FILE>    [default: ./SRC_FILE.hff]

选项

-b, --block-size <SIZE>
        Set how many bytes can be loaded from the file at one time
        Possible units: 
            K/Ki -> Kilobytes/Kibibytes
            M/Mi -> Megabytes/Mebibytes
            G/Gi -> Gigabytes/Gibibytes
         [default: 2G]

标志

-d, --decompress    
        Decompresses the hff SRC_FILE into DST_FILE.hff
            
-n, --noask         
        Omits asking if should replace existing DST_FILE

-r, --replace       
        Deletes SRC_FILE upon completion

-t, --time          
        Prints how long it took to finish
-h, --help          
        Prints help information

-V, --version       
        Prints version information

文件格式

hff 文件格式编码如下

  1. 一个字节包含用于填充的位数
    • 前4位存储 HuffTree's 填充位
    • 剩余的位存储压缩数据的填充位
  2. 4个字节表示存储的 HuffTree 长度(以字节为单位)
  3. 一个 HuffTree,用于压缩文件,以二进制形式表示(见 HuffTree::try_from_bin
  4. 实际的压缩数据

依赖

~2MB
~34K SLoC