Huffman-coding 1.1.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package Huffman-coding --version 1.1.0                
NuGet\Install-Package Huffman-coding -Version 1.1.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Huffman-coding" Version="1.1.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Huffman-coding --version 1.1.0                
#r "nuget: Huffman-coding, 1.1.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Huffman-coding as a Cake Addin
#addin nuget:?package=Huffman-coding&version=1.1.0

// Install Huffman-coding as a Cake Tool
#tool nuget:?package=Huffman-coding&version=1.1.0                

Huffman Coding Library

This library provides robust functionality for implementing Huffman coding, a renowned compression algorithm widely utilized for text compression tasks. With this package, you can:

  • Encode plain text efficiently, employing Huffman coding's technique of replacing frequently occurring characters with shorter binary representations.
  • Encode entire text files, effectively compressing substantial amounts of text data into smaller, more manageable files, ideal for storage or transmission.
  • Decode previously encoded text, effortlessly reverting the compression process and restoring the original content.
  • Decode previously encoded files, allowing seamless recovery of the original text from Huffman encoded files.
  • Ensure file integrity with a utility method for checking file extensions, ensuring compatibility and safeguarding against processing unsupported file types.
  • Optionally enable protocol logging to track the encoding process, providing invaluable insights into frequency calculation, encoding table generation, and encoded text output for debugging and monitoring purposes.

Frequency Consideration for Effective Encoding

For optimal compression performance using Huffman coding, it's essential to consider the frequency distribution of characters within the text. While this library provides robust functionality for Huffman encoding and decoding, it's important to note that the effectiveness of compression heavily relies on the frequency of characters in the text.

Enable Protocol:

ShowProtocol = true;

Enabling the protocol generates console outputs detailing the ongoing operations, providing visibility into the internal processes.

Encode File:

var huffmanCoding = new HuffmanCoding();
huffmanCoding.EncodeFile(encodedFilePath);

This snippet demonstrates how to encode a text file using Huffman coding. First, an instance of the HuffmanCoding class is created. Then, the EncodeFile method is called with the encodedFilePath parameter, which represents the path to the text file to be encoded. This method reads the contents of the file, encodes the text using Huffman coding, and saves the encoded text to a new file with a ".hfc" extension.

Encode Text:

var huffmanCoding = new HuffmanCoding();
huffmanCoding.EncodeText(OriginalText);

Here, the code initializes Huffman coding by creating an instance of the HuffmanCoding class. Then, the EncodeText method is invoked with OriginalText as the parameter, representing the plain text to be encoded. This method encodes the provided text using Huffman coding and returns the encoded text.

Decode File:

var huffmanCoding = new HuffmanCoding();
huffmanCoding.DecodeFile(encodedFilePath);

In this snippet, Huffman coding is utilized to decode a text file that has been previously encoded. Similar to the encoding process, an instance of the HuffmanCoding class is created. Then, the DecodeFile method is called with encodedFilePath as the parameter, representing the path to the encoded file. This method reads the contents of the encoded file, decodes the text using Huffman coding, and returns the decoded text.

Decode Text:

var huffmanCoding = new HuffmanCoding();
huffmanCoding.DecodeText(encodedText);

Here, Huffman coding is employed to decode previously encoded text. First, an instance of the HuffmanCoding class is instantiated. Then, the DecodeText method is invoked with encodedText as the parameter, representing the text that has been encoded using Huffman coding. This method decodes the provided encoded text and returns the decoded plain text.

Supported File Types

  • Text files (.txt)
  • JSON files (.json)
  • YAML files (.yaml, .yml)
  • XML files (.xml)
  • CSV files (.csv)
  • HTML files (.html)
  • CSS files (.css)

Authors

  • Keanu Koelewijn
  • Stefan Jesenko
  • Salma Tanner

License

This project is licensed under the Beerware License - see the LICENSE file for details.

Feedback

Hey, this is our first package! We would greatly appreciate your feedback. Please fill out our feedback form here.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.1.1 156 4/26/2024
1.1.0 115 4/26/2024
1.0.3 147 3/22/2024
1.0.2 124 3/22/2024
1.0.1 137 3/22/2024