#huffman #lossless #codes #codec #no-std

nightly huffman-codec

通过huffman码进行无损压缩的no_std编解码器

7个版本

0.1.6 2020年12月9日
0.1.5 2020年12月2日
0.1.3 2020年11月27日
0.1.2 2020年9月29日

#362压缩 分类中

每月 26 次下载

无授权

18KB
325

Huffman码

通过Huffman码进行无损数据压缩

Rust

Build

~300行代码,无依赖,no_std

基准测试

实现将ASCII表示存储在Vec中,非ASCII码存储在BTreeMap中。在2.3 GHz 8-Core Intel Core i9处理器上进行的基准测试

% cargo bench
test medium_decode ... bench:   1,000,752 ns/iter (+/- 82,200)
test medium_encode ... bench:     810,993 ns/iter (+/- 50,708)
test small_decode  ... bench:     191,527 ns/iter (+/- 30,319)
test small_encode  ... bench:      46,148 ns/iter (+/- 4,768)

前言

所有示例查询均来自swish REPL

(main)% swipl huffman.pl
Welcome to SWI-Prolog (threaded, 64 bits, version 8.2.1)
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software.
Please run ?- license. for legal details.
For online help and background, visit https://www.swi-prolog.org
For built-in help, use ?- help(Topic). or ?- apropos(Word).
?- 

示例查询及输出

?- make_code('How are you doing?',C),ncode('How are',C,R),write(R).
[0,0,0,1,1,1,1,1,0,1,0,1,1,0,0,0,1,0,1,0,0,0,0,1,0,0]
C = [[1, ?, [0, 0, 0, 0]], [1, 'H', [0, 0, 0, 1]], [1, a, [0, 0, 1|...]], [1, d, [0, 0|...]], [1, e, [0|...]], [1, g, [...|...]], [1, i|...], [1|...], [...|...]|...],
R = [0, 0, 0, 1, 1, 1, 1, 1, 0|...] .

?- make_code('How are you doing?',C),dcode([0,0,0,1,1,1,1,1,0,1,0,1,1,0,0,0,1,0,1,0,0,0,0,1,0,0],C,R).
C = [[1, ?, [0, 0, 0, 0]], [1, 'H', [0, 0, 0, 1]], [1, a, [0, 0, 1|...]], [1, d, [0, 0|...]], [1, e, [0|...]], [1, g, [...|...]], [1, i|...], [1|...], [...|...]|...],
R = "How are" .

?- test.
Character            Frequency          Code
! :                  1                  00010
c :                  1                  00011
g :                  1                  00100
l :                  1                  00101
p :                  1                  00110
r :                  1                  00111
u :                  1                  01000
x :                  1                  01001
d :                  2                  11110
f :                  2                  11111
h :                  2                  0000
i :                  3                  0101
m :                  3                  0110
o :                  3                  0111
s :                  3                  1010
a :                  4                  1011
e :                  4                  1100
n :                  4                  1101
t :                  4                  1110
  :                  7                  100
true .

许可证

版权所有 2020 4meta5

以下是对任何获得本软件及其相关文档副本(“软件”)的人的授权,免费使用软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向提供软件的人提供本软件副本的人这样做,前提是满足以下条件:

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些责任是因合同、侵权或其他方式引起的,无论这些责任是否与软件或软件的使用或其他方式有关。

无运行时依赖

特性