資源簡介
通過編程實現仿真模擬基于哈夫曼編碼的信源編碼與解碼過程,對于給定的源文檔SourceDoc.txt,
1) 統計其中所有字符的頻度(某字符的頻度等于其出現的總次數除以總字符數),字符包括字母(區分大小寫)、標點符號、格式控制符(空格、回車等)以及特殊字符。
2)按頻度統計結果構建哈夫曼編碼表,輸出哈夫曼碼表信息文件Statistic.txt。
3)基于哈夫曼編碼表進行編碼,生成對應的二進制碼流,并輸出到文件Encode.dat,完成信源的編碼過程。
4)根據生成的哈夫曼編碼表,對二進制碼流文件Encode.dat進行解碼,把結果輸出到文件TargetDoc.txt,完成信源的解碼過程。
5)判
代碼片段和文件信息
#include?“mystruct.h“
int?Coding(FILE?*fp1HuffmanCode?HCint?m?)
{
FILE*?fp2;
if((fp2=fopen(“D:\\Encode.dat““wb“))==NULL)
{
printf(“打開文件出錯\n“);
exit?(0);
}
char?chch1;
int?ij;
int?k=0;
char?c=0;
fseek(fp10LSEEK_SET);???//初始化,定位到文件開頭
????ch=fgetc(fp1);
while(ch!=EOF)
{
for(i=1;i<=m;i++)
{
if(ch==HC[i].c)
{
for(j=HC[i].start;j {
ch1=HC[i].bits[j];
if(ch1==‘1‘)????//如果在HC[i].bits[j]是“1”時,對應的k位為1;否則為0
{
switch(k)
{
case?0:?c=c|0x80;??break;
case?1:?c=c|0x40;??break;
case?2:?c=c|0x20;??break;
case?3:?c=c|0x10;??break;
case?4:?c=c|0x08;??break;
case?5:?c=c|0x04;??break;
case?6:?c=c|0x02;??break;
case?7:?c=c|0x01;??break;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2015-12-23?21:58??project\
?????目錄???????????0??2015-12-23?21:58??project\Backup\
?????文件????????1175??2015-12-23?17:54??project\Coding.cpp
?????文件????????1815??2015-12-23?17:54??project\Coding.o
?????文件????????1296??2015-12-23?17:55??project\Comparing.cpp
?????文件????????2353??2015-12-23?17:55??project\Comparing.o
?????文件?????????396??2015-12-23?17:55??project\CreateList.cpp
?????文件?????????919??2015-12-23?17:55??project\CreateList.o
?????目錄???????????0??2015-12-23?21:58??project\Debug\
?????文件????????7023??2015-12-23?17:09??project\Debug\main.obj
?????文件??????186856??2015-12-23?17:03??project\Debug\test.pch
?????文件???????41984??2015-12-23?17:09??project\Debug\vc60.idb
?????文件???????53248??2015-12-23?17:09??project\Debug\vc60.pdb
?????文件????????1205??2015-12-23?17:55??project\DeCoding.cpp
?????文件????????1926??2015-12-23?17:55??project\DeCoding.o
?????文件?????????595??2015-12-23?17:57??project\Frequent.cpp
?????文件????????1046??2015-12-23?17:57??project\Frequent.o
?????文件????????2268??2015-12-23?18:00??project\HuffmanCoding.cpp
?????文件????????2012??2015-12-23?18:00??project\HuffmanCoding.o
?????文件????????1296??2015-12-23?17:59??project\main.cpp
?????文件?????????463??2015-12-23?23:41??project\main.dev
?????文件????????3377??2015-12-23?17:07??project\main.dsp
?????文件?????????516??2015-12-23?17:08??project\main.dsw
?????文件??????142448??2015-12-23?18:00??project\main.exe
?????文件?????????717??2015-12-23?23:41??project\main.layout
?????文件???????41984??2015-12-23?17:10??project\main.ncb
?????文件????????2538??2015-12-23?17:59??project\main.o
?????文件???????53760??2015-12-23?17:10??project\main.opt
?????文件????????2238??2015-12-23?17:09??project\main.plg
?????文件????????6244??2015-12-23?21:58??project\main.vcxproj
?????文件????????1009??2015-12-23?23:41??project\Makefile.win
............此處省略8個文件信息
評論
共有 條評論