xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 5.36MB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2023-09-25
  • 語(yǔ)言: 其他
  • 標(biāo)簽: 哈弗曼??

資源簡(jiǎn)介

編譯環(huán)境vs,功能如題目所述對(duì)Bmp圖像進(jìn)行哈弗曼編碼和解碼

資源截圖

代碼片段和文件信息

//?霍夫曼壓縮BMP文件.cpp?:?定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
//

#include?“stdafx.h“


#include?
#include?
#include?
#include?“HuffmanCode.h“

using??namespace?std;

#define?BUF_LEN 4096

void?ShowHelp()
{
cout?<?“?< cout?<?“?< cout?<}

//?將buf中01串循環(huán)轉(zhuǎn)換為字符寫入文件,rBegin開始位置,end結(jié)束位置,len緩沖區(qū)長(zhǎng)度
void?WriteToFile(FILE?*file?char?*buf?int?&rBegin?int?end?int?len)
{
int?d?=?end?-?rBegin;?//?差距
if?(d? {
d?+=?len;?//?end在begin之前,循環(huán)到前面位置了
}
d?=?d?/?8?*?8;?//?本次總共需要讀入的數(shù)據(jù),每八位組成一個(gè)字節(jié)
if?(d?<=?0)
{
return;
}
unsigned?char?*wBuf?=?new?unsigned?char[d?/?8];
memset(wBuf?0?d?/?8);
int?c?=?0;?//?當(dāng)前已經(jīng)讀入的
unsigned?char?mark?=?0x80;
while?(c? {
if?(0?==?(c?%?8))
{
mark?=?0x80;
}
if?(‘1‘?==?buf[rBegin])
{
wBuf[c?/?8]?|=?mark;
}
mark?>>=?1;
c++;
rBegin++;
if?(rBegin?>=?len)
{
rBegin?=?0;
}
}
fwrite(wBuf?sizeof(char)?d?/?8?file);
}

//?將n以01串的形式寫入buf中
void?WriteByte(unsigned?char?n?char*?buf?int?&rBegin?int?len)
{
unsigned?char?m?=?0x80;
while?(m?>?0)
{
if?(0?==?(n?&?m))
{
buf[rBegin]?=?‘0‘;
}
else
{
buf[rBegin]?=?‘1‘;
}
rBegin++;
if?(rBegin?>=?len)
{
rBegin?=?0;
}
m?=?m?>>?1;
}
}

//?編碼
void?Code(char*?input?char*?output)
{
FILE?*file?=?fopen(input?“rb“);
if?(NULL?==?file)
{
cout?< return;
}
FILE?*outFile?=?fopen(output?“wb“);
if?(NULL?==?outFile)
{
cout?< fclose(file);
return;
}
CHuffmanCode?hfm;
unsigned?char?b[1024];?//?讀文件緩沖區(qū)
unsigned?long?fileLen?=?0;?//?文件大小
int?i;
//?直接讀入文件,統(tǒng)計(jì)字節(jié)信息。
//?也可以只讀圖像內(nèi)容,但解碼還原時(shí),如果是非24位位圖還需要記錄調(diào)色板信息,不如直接處理文件。
int?len?=?fread(b?sizeof(char)?1024?file);
while?(len?>?0)
{
fileLen?+=?len;
for?(i?=?0;?i? {
hfm.Add(b[i]);
}
len?=?fread(b?sizeof(char)?1024?file);
}
//?讀入完成,開始編碼
hfm.CreateCode();

char?buf[BUF_LEN];?//?緩沖區(qū)
int?wBegin?=?0;?//?寫入開始位置
int?rBegin?=?0;?//?讀取開始位置
//?生成新文件,文件格式為:4字節(jié)文件頭4字節(jié)原文件長(zhǎng)度+不定長(zhǎng)編碼表(256個(gè)[1字節(jié)[編碼長(zhǎng)度-1]+編碼])+內(nèi)容
buf[0]?=?‘H‘;
buf[1]?=?‘F‘;
buf[2]?=?‘M‘;
buf[3]?=?‘?‘;
//?寫入文件頭
fwrite(buf?sizeof(char)?4?outFile);
//?寫入長(zhǎng)度
fwrite(&fileLen?sizeof(long)?1?outFile);
//?寫入編碼表
for?(i?=?0;?i? {
WriteByte((unsigned?char)(hfm.GetCodeLen(i)?-?1)?buf?wBegin?BUF_LEN);?//?將編碼長(zhǎng)度-1寫入緩沖(長(zhǎng)度范圍在1-256之間)
hfm.AppendCode(i?buf?wBegin?BUF_LEN);?//?將編碼寫入緩沖
WriteToFile(outFile?buf?rBegin?wBegin?BUF_LEN);?//?將緩沖寫入文件
}
fseek(file?0?SEEK_SET);?//?移動(dòng)到頭從新開始讀
char?back[]?=?{?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?0?};
int?fileRead?=?0;
int?oldBfb?=?-1;?//?上次百分比
do{
len?=?fread(b?sizeof(char)?1024?file);
for?(i?=?0;?i? {
hfm.AppendCode(b[i]?buf?wBegin?BUF_LEN);?//?將編碼寫入緩沖
WriteToFile(outFile?buf?rBegin?wBegin?BUF_LEN);?//?將緩沖寫入文件
}
fileRead?+=?len;
if?(oldBfb?!=?((fileRea

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2014-05-21?18:28??Bmp編碼和解碼\
?????目錄???????????0??2014-05-21?18:27??Bmp編碼和解碼\Bmp編碼和解碼\
?????文件?????6574080??2014-05-21?18:28??Bmp編碼和解碼\Bmp編碼和解碼.sdf
?????文件?????????921??2014-05-21?17:59??Bmp編碼和解碼\Bmp編碼和解碼.sln
?????文件???????14848??2014-05-21?18:28??Bmp編碼和解碼\Bmp編碼和解碼.suo
?????文件????????6454??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Bmp編碼和解碼.cpp
?????文件????????4488??2014-05-21?18:10??Bmp編碼和解碼\Bmp編碼和解碼\Bmp編碼和解碼.vcxproj
?????文件????????1241??2014-05-21?18:02??Bmp編碼和解碼\Bmp編碼和解碼\Bmp編碼和解碼.vcxproj.filters
?????文件?????????143??2014-05-21?17:59??Bmp編碼和解碼\Bmp編碼和解碼\Bmp編碼和解碼.vcxproj.user
?????目錄???????????0??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\
?????文件?????????406??2014-05-21?18:10??Bmp編碼和解碼\Bmp編碼和解碼\Debug\Bmp編碼和解碼.exe.embed.manifest
?????文件?????????472??2014-05-21?18:10??Bmp編碼和解碼\Bmp編碼和解碼\Debug\Bmp編碼和解碼.exe.embed.manifest.res
?????文件?????????381??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\Bmp編碼和解碼.exe.intermediate.manifest
?????文件??????????65??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\Bmp編碼和解碼.lastbuildstate
?????文件????????5532??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\Bmp編碼和解碼.log
?????文件???????95263??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\Bmp編碼和解碼.obj
?????文件?????????206??2014-05-21?18:10??Bmp編碼和解碼\Bmp編碼和解碼\Debug\Bmp編碼和解碼_manifest.rc
?????文件????????1310??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\cl.command.1.tlog
?????文件???????11568??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\CL.read.1.tlog
?????文件?????????990??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\CL.write.1.tlog
?????文件???????21728??2014-05-21?18:10??Bmp編碼和解碼\Bmp編碼和解碼\Debug\HuffmanCode.obj
?????文件???????????2??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\link-cvtres.read.1.tlog
?????文件???????????2??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\link-cvtres.write.1.tlog
?????文件???????????2??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\link.1984-cvtres.read.1.tlog
?????文件???????????2??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\link.1984-cvtres.write.1.tlog
?????文件???????????2??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\link.1984.read.1.tlog
?????文件???????????2??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\link.1984.write.1.tlog
?????文件???????????2??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\link.5260-cvtres.read.1.tlog
?????文件???????????2??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\link.5260-cvtres.write.1.tlog
?????文件???????????2??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\link.5260.read.1.tlog
?????文件???????????2??2014-05-21?18:24??Bmp編碼和解碼\Bmp編碼和解碼\Debug\link.5260.write.1.tlog
............此處省略27個(gè)文件信息

評(píng)論

共有 條評(píng)論