freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

基于哈夫曼樹的文件壓縮解壓程序-示例文檔-文庫吧在線文庫

2024-12-30 19:59上一頁面

下一頁面
  

【正文】 pc 匯編語言程度設計》 6162 頁 7 F 寫入算法另一角度的優(yōu)化 —— 使用二級 1024K 緩沖器 在寫入編碼的過程中,宏觀的過程是:以字節(jié)形式讀取原文件,然后找到該字節(jié)的編碼,進而以字節(jié)形式寫到壓縮文件中去。 一級緩沖器在微觀上解決了寫編碼速度的問題,而二級緩沖器則在宏觀上改善了寫編碼的問題,兩者關系的嵌套的關系,實際的程序主結構也就是一個二重循環(huán),外層控制二級緩沖器,內層控制一級緩沖器。 1 戴梅萼 史嘉權《微型計算機技術及應用》第二版 199201 頁 2 王浩 《面向對象程序設計》 第 245 頁 8 2.解壓縮算法部分 現(xiàn)在從已壓縮過的文件中讀取一段代碼,如 ”1001011101…… ”,哈夫曼樹結構入圖,先讀如第一個字節(jié) ”10010111”,先取出? 1?,在 ABCD 中均無這個編碼;于是再取出 ? 0?和剛才的? 1?組成? 01?,仍無此編碼;再取出? 0?,組成? 010?,發(fā)現(xiàn) B 葉子的編碼與之相等,此時解碼得 B,輸出到解碼文件中,以此類推。 但是這兩種算法都基于與葉子編碼比較,相當于不斷的嘗試,解壓速度很難突破 100KB/s。 最后一個字節(jié)在解碼時必須注意到壓縮時最后一個字節(jié)是用 ”0”或 ”1”填充的,要避免多余解碼,可以在索引中寫入文件大小,詳見下節(jié)。所以我們還得標識出編碼的長度 A1 B3 C3 D2,即 01000001 00000000 0 01000010 00000011 100 01000011 00000011 101 01000100 00000010 11 A 長度 0 B 長度 3 C 長度 3 D 長 度 2 這樣的確是區(qū)別開了,沒有歧義,可是編碼變長了,我們可以規(guī)定葉子是按順序排列的,此時編碼就變短了,即: 00000000 0 00000011 100 00000011 101 00000010 11 A 的長度 B 的長度 C 的長度 D 的長度 事實上最大一共有 256 個葉子,計算機依次讀 256 次就可以了。當然,要使用這種方法,就必須在壓縮時用一個遞歸函數(shù)來遍歷這棵樹以獲得樹結構編碼。 索引的編碼和解碼都用到了遞歸,而遞歸的參數(shù)都相當多而且很多是數(shù)組,為了節(jié)省空間,要運用引用操作。 D. 細節(jié)問題 計算坐標和描繪節(jié)點都是遞歸方法,因為程序的主體就是二個遞歸程序。 如果兩個文件長度相同,則可以正式比對。在做本課程設計中,前前后后花了一個半月的時間。 pragma package(smart_init) pragma resource *.dfm char inputFileBuffer[1048576]。 AnsiString sMs=AnsiString(Ms)。lchild,vectorint amp。i,vectorint amp。 } void searchdraw(int nodeCode,int height,vectorint amp。 Form3Image1CanvasBrushColor=clYellow。lchild,vectorint amp。 indexSearch(rchild[nodeCode],lchild,rchild,index,code)。()。 // __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } // void __fastcall TForm1::Compress(TObject *Sender) { if (!FileExists(Edit1Text)) { ShowMessage(Edit1Text+ 文件不存在 !)。 Label1Caption=。 ProgressBar1Position=0。 ofstream fout。 int wantFileIndexByte=0。 strcpy(inputFileName,Edit1())。 //下面統(tǒng)計該文件的編碼頻率分布 Edit9Text=ShowNowTime()。i++) { int t=inputFileBuffer[i]。 for(int i=0。 Label22FontColor=clOlive。 a=()。 (a)。 Form3Image1CanvasRectangle(0,0,6000,1500)。 goto BEGININDEX。 vectorintcode。 Label2Caption=索引長度為 +AnsiString(wantFileIndexByte)+byte。 //////////////////////////////////////////////////////////下面開始寫入索引信息 (wantFileName,ios::binary)。i++) (code[i])。 if (indexbuffersize==8) { (indexbuffer)。 int wantFileBufferSize=0。i++) { (inputFileBuffer,1048576)。 while (buffersize=8) { int temp=buffer24。 StatusBar1PanelsItems[0]Text=已完成 +AnsiString(step)+%。iinputFileRestSize。 buffersize=8。 StatusBar1PanelsItems[0]Text=已完成 +AnsiString(step)+%。 ()。 Label1Caption=ok。 StatusBar2PanelsItems[2]Text=。 int wantFileByte=0。 if (t0) t=256+t。 for(int i=0。 else indexByteSize=indexSize/8。j++) { if(tamp。 int tt=257。 for(int i=0。 if (wantFileBufferSize==1048576) { (wantFileBuffer,1048576)。 } if (haveByte==wantFileByte) goto end。 while(buffersize) { if (bufferamp。 StatusBar2PanelsItems[2]Text=AnsiString(haveByte)+字節(jié) 。 } } end: StatusBar2PanelsItems[1]Text=已解壓 100%。 Edit14Text=ShowNowTime()。 ()。 } if (haveByte==wantFileByte) goto end。 if (wantFileBufferSize==1048576) { (wantFileBuffer,1048576)。 } } 23 } for(int i=0。 StatusBar2PanelsItems[2]Text=AnsiString(haveByte)+字節(jié) 。 while(buffersize) { if (bufferamp。 int searchNumber=newNodeCode。 t=t1。i++) { int t=()。 (t)。 int leaf=()。 (Edit3(),ios::binary)。 Edit7Text=ShowNowTime()。 Label8FontColor=clOlive。 Label25FontColor=clOlive。 } } ProgressBar1Position=100。 } } if (wantFileBufferSize==1048576) { (wantFileBuffer,1048576)。 buffer+=a(32buffersizehfmCode[t].first)。 } if (wantFileBufferSize==1048576) { (wantFileBuffer,1048576)。 if (wantFileBufferSize==1048576) { (wantFileBuffer,1048576)。 if (t0) t+=256。 Form1Update()。 (indexbuffer)。i()。 (inputFileByte%256)。 if (wantFileContentBit%8) wantFileContentByte=wantFileContentBit/8+1。 wantFileIndexByte+=()。 Label24FontColor=clOlive。 Form3Show()。Form1Update()。 newNodeCode++。 for (int i=0。 frequent[t]++。 ProgressBar3Position=inputFileMega*1048576/double(inputFileByte)*100。 while(1) { (inputFileBuffer,1048576)。 inputFileByte=filelength(handle)。 int buffersize。 vector pair int,int hfmCode(256)。 Edit8Text=ShowNowTime()。 Label5Caption=。 Edit10Text=。()。indexNum,listint amp。(nodeCode)。 Form3Image1CanvasMoveTo(X[nodeCode]*20+5,height*60+10+4)。 Form3Image1CanvasTextOut(X[nodeCode]*205,height*60+14,An
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1