#huffman #huffman-coding #decoding #encoding #codec #rust

huffmanrs

Huffmanrs 是一个使用 Huffman 编码进行文本编码和解码的 Rust 库。

1 个不稳定版本

0.1.0 2023 年 9 月 16 日

342多媒体

MIT 许可证

24KB
210 代码行

Huffmanrs

Huffmanrs 是一个使用 Huffman 编码进行文本编码和解码的 Rust 库。

功能

  • 编码文本。
  • 解码代码。

安装

要在您的项目中使用 Huffmanrs,请将以下依赖项添加到您的 Cargo.toml 文件中

[dependencies]
huffmanrs = "0.1.0"

示例

use huffmanrs::{HuffmanNode, Huffman};

fn main() { 
    // Créer une instance de huffman
    let mut huffman = Huffman::new();
    // Demande un texte en entré pour calculer les fréquences et construire l'arbre d'encodage
    huffman.build("hello");
    // Exemple d'encodage
    dbg!(huffman.encode("abbccc")); // encode le mot abbccc en 101111000
    // Exemple de décodage
    dbg!(huffman.decode("101111000")); // decode le code 101111000 en abbccc

    // L'API de Huffman est disponible via Huffman::, vous pouvez donc construire votre propre implémentation de Huffman et réutiliser les composants qui vous intéressent, tels que Huffman::build_huffman_tree etc.
}

有关更多示例,请详细阅读文档和测试。

注意 !!!!!!!!

Huffman::build_frequency_table 不分配任何优先级给模式,因此如果多个模式具有相同的频率,例如 "hello" 中的 "h"、"e" 和 "o",则连续执行此代码不应给出相同的编码。

use huffmanrs::{HuffmanNode, Huffman};

fn main() { 
    // Créer une instance de huffman
    let mut huffman = Huffman::new();
    // Demande un texte en entré pour construire l'arbre de fréquence
    huffman.build("hello");
    // Exemple d'encodage
    dbg!(huffman.encode("hello")); // sortie possible :1001111100, 1000111101, 0010111101 etc.

    // Si ce comportement ne vous satisfait pas, vous pouvez réimplémenter Huffman::build_huffman_tree.
}

在这种情况下,为了解码,访问生成的频率表或树至关重要。

贡献

欢迎贡献!如果您想改进或添加 Huffmanrs 的功能,请在 GitHub 上提交一个 pull request。

许可证

本项目遵循 MIT 许可证。请参阅 LICENSE 文件获取更多信息。

无运行时依赖