Skip to main content
Email Password   helpLost your password?

Contents

Introduction

This version of file encoder and decoder program is based on the Huffman coding method. It explicitly demonstrates the details of the files during the encoding and decoding. The algorithm is encapsulated in a class En_Decode by the standard C++ language. Here is a demonstration project for the class.

Using the code

This class is implemented by standard C++, so it is very easy to use.

  1. Create an MFC application program as usual.
  2. Add the source file En_Decode.cpp and En_Decode.h to the project.
  3. Add the header file to your project by:
    //
    
    //    #include "En_Decode.h"
    
    //
    
    

    Define your own coder object, such as:

    //
    
    //    En_Decode Coder;
    
    //
    
    
  4. Use the member function of the class to set the source file name and destination encoded file name, then call Encode() to encode the source file.
    //
    
    //    Coder.SetInputFileName("C:/test.txt", "txt");
    
    //    Coder.SetOutputFileName("C:/encoded");
    
    //    Coder.Encode();
    
    //
    
    

In the same way, we can decode the encoded files to exactly the source file.

Class Members

Construction

En_Decode Constructs a En_Decode object.

File Name Functions

SetInputFileName Set the input file name.
SetOutputFileName Set the output file name.
GetExtName Get the ext name of the encoded file when decoding.

Paraneter Functions

GetMinFreq Get the minimum frequency of the symbols in the source file.
GetMaxFreq Get the maximum frequency of the symbols in the source file.
GetFreq(idx) Get the frequency value of a symbol in the source file.
GetActiveSymbols Get the number of active symbols in the source file.
GetActualDataLength Get the bytes number of the encoded file not including head.
GetUncodedFileLength Get the length of the source file.
GetEncodedFileCodeLength Get the average code length of the encoded file.
GetSourceFileEntropy Get the entropy of the source file.

Thanks to...

Derek Lakin for his help with CTabCtrlSSL in the demo project.

Contacting the Authors

This is the first time I share my code here. It is done in a hurry, so exception handling is ignored. Any one who is interested in it can enhance it freely, and please let me know about any improvement, thanks!

I am a junior student in Huangzhong University of Science and Technology, China. I am interested in C++ and MFC, and any coding project. I am glad to share my codes here with any one, though it is not that good.

Please contact me via email (zxt0123@163.com).

You must Sign In to use this message board.
 
 
Per page   
 FirstPrevNext
Questionfind some error Pin
bansal2945
10:09 4 Dec '08  
GeneralMFC coding Pin
cuty_bujji
2:53 22 Jul '08  
QuestionIs there any other compressing algorithm more efficient than huffman coding Pin
wavebai
23:05 9 May '07  
GeneralHow to compress many files in folder? Pin
Newcc
19:12 11 Oct '06  
GeneralTab.h Pin
beardy janggut
15:45 14 Mar '06  
GeneralRe: Tab.h Pin
cristitomi
3:17 10 Mar '07  
GeneralStreaming Compression? Pin
andrew2358
6:06 14 Jun '04  
GeneralRe: Streaming Compression? Pin
Alan Balkany
7:14 14 Jun '04  
GeneralRe: Streaming Compression? Pin
handychang
19:19 15 Jun '04  
GeneralRe: Streaming Compression? Pin
John M. Drescher
6:39 16 Jun '04  
GeneralRe: Streaming Compression? Pin
Anonymous
6:06 23 Jun '05  
GeneralRe: Streaming Compression? Pin
John M. Drescher
6:34 23 Jun '05  
GeneralRe: Streaming Compression? Pin
Jan Rodriguez
12:44 19 Oct '06  
GeneralSuggestion ! Pin
NewGhost
21:46 11 Jun '04  
GeneralRe: Suggestion ! Pin
handychang
21:46 12 Jun '04  
GeneralRe: Suggestion ! Pin
leandrobecker
10:51 27 Aug '04  
GeneralRe: Suggestion ! Pin
jazzwithshaz
19:30 13 Jan '05  
GeneralHow does Huffman coding work? Pin
AORD
17:40 7 Jun '04  
GeneralRe: How does Huffman coding work? Pin
handychang
21:55 7 Jun '04  
GeneralRe: How does Huffman coding work? Pin
amirhosein
22:15 15 Dec '07  
GeneralPicky!!! Pin
Paul Charles
6:49 3 Jun '04  
GeneralRe: Picky!!! Pin
Jubjub
14:30 3 Jun '04  
GeneralRe: Picky!!! Pin
Anonymous
19:22 3 Jul '05  
GeneralRe: Picky!!! Pin
Jubjub
19:45 3 Jul '05  
GeneralRe: Picky!!! Pin
handychang
16:20 3 Jun '04  


Last Updated 6 Jun 2004 | Advertise | Privacy | Terms of Use | Copyright © CodeProject, 1999-2009