亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? encode.c

?? 用C語言編寫程序?qū)崿F(xiàn)Zip或者Rar無損壓縮算法
?? C
字號:
 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  *                                 *

  *HUFF.C Huffman encode for multimedia application 8*8 pixel Ver 3 *

  *                                 *

  *Ver 1: Complied in Borland Turbo C++ 3.0             *

  *Ver 2: Complied in Microsoft Visual C++ 6.0           *

  *Ver 3: Complied in Microsoft Visual C++ 6.0           *

  *     add code to print code table of the compression     *

  *     print output message in Chinese             *

  *                                 *

  *by Lee Meitz, Solid Mechanics, Huazhong Univ of Sci and Tech   *

  *2001.11.15 - 2001.12.27                      *

  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define DNUM 64  //define data number 8*8
#define LOOP 10000 //times of compression
typedef struct
{
  unsigned short weight, data;
  unsigned short parent, lchild, rchild;
} HuffNode;
typedef struct
{
  unsigned char code;
  unsigned short codelength;
} HuffCode;
unsigned int fCount[256] = {0};
unsigned int data_num;
unsigned int code_size;
unsigned int last_bit;
void FrequencyCount(unsigned char*);     //頻率統(tǒng)計
void HuffSelect(HuffNode*, int, int*, int*); //從結(jié)點中選出權(quán)最小的兩個節(jié)點
void HuffmanCodeTable(HuffNode*, HuffCode*); //構(gòu)造huffman樹,生成huffman編碼表
void HuffmanCompress(unsigned char*, unsigned char *, HuffCode*); //壓縮數(shù)據(jù)
void BitPrint(unsigned char*);        //按位打印結(jié)果,用于調(diào)試
void main()
{
  int i, j, loop;                //variable for loop
  HuffNode hfdata[2*DNUM] = {{0, 0, 0, 0, 0}}; //Huffman node
  HuffCode code_table[256] = {{0, 0}};     //code table will be searched by subscript
  unsigned char hfcode[2*DNUM];         //output code
  time_t time1, time2;
/* unsigned char pixel[DNUM] = {
  1,2,3,4, 1,2,3,4, 1,2,3,4, 1,1,1,1};
*/
/* unsigned char pixel[DNUM] = {
    139,144,149,153,155,155,155,155,
    144,151,153,156,159,156,156,156,
    150,155,160,163,158,156,156,156,
    159,161,162,160,160,159,159,159,
    159,160,161,162,162,155,155,155,
    161,161,161,161,160,157,157,157,
    162,162,161,163,162,157,157,157,
    162,162,161,161,163,158,158,158};
*/
  unsigned char pixel[DNUM] = { //random data
    141, 101, 126, 111, 163, 112, 133, 156,
    103, 144, 111, 176, 117, 120, 188, 187,
    175, 164, 190, 156, 112, 179, 142, 119,
    140, 111, 127, 186, 196, 190, 189, 127,
    185, 103, 185, 110, 192, 139, 159, 104,
    151, 193, 178, 198, 114, 170, 179, 149,
    124, 149, 165, 108, 141, 176, 113, 164,
    101, 140, 120, 126, 173, 189, 158, 184};
/* unsigned char pixel[DNUM] = {
    202, 221, 159, 183, 41, 136, 247, 66,
    146, 29, 101, 108, 45, 61, 210, 236,
    90, 130, 54, 66, 132, 206, 119, 232,
    184, 135, 96, 78, 120, 41, 231, 203,
    150, 94, 172, 142, 122, 180, 150, 204,
    232, 121, 180, 221, 3, 207, 115, 147,
    72, 149, 169, 121, 76, 208, 235, 43,
    107, 58, 0, 237, 197, 7, 210, 89};
*/
  FrequencyCount(pixel);
  time1 = time(NULL);
  for (loop=0; loop<LOOP; loop++) {
    //set huffman nodes data and weight, i=0:255, j=1:64
    for (i=0, j=1, data_num=0; i<256; i++) {
      if (fCount[i]) {
        hfdata[j].weight = fCount[i];
        hfdata[j++].data = i;
        data_num ++;
      }
    }
    //build huffman tree and generate huffman code table
    HuffmanCodeTable(hfdata, code_table);
    //compress source data to huffman code using code table
    HuffmanCompress(pixel, hfcode, code_table);
    //initial hfdata and code_table
    for (j=0; j<2*DNUM; j++) {
      hfdata[j].data=0;
      hfdata[j].lchild=0;
      hfdata[j].parent=0;
      hfdata[j].rchild=0;
      hfdata[j].weight=0;
    }
  }
  time2 = time(NULL);
  //conclude
  printf("n哈夫曼編碼壓縮圖塊,壓縮報告n華中科技大學(xué)力學(xué)系:李美之n");
  printf("n◎源數(shù)據(jù)(%d字節(jié)):n ", DNUM);
  for (i=0; i<DNUM; i++) {
    printf(i%8==7 ? "%02Xn " : "%02X ", pixel[i]);
  }
  printf("n◎壓縮數(shù)據(jù)(%d字節(jié)):n ", code_size);
  for (i=0; i<code_size; i++) {
    printf(i%8==7 ? "%02Xn " : "%02X ", hfcode[i]);
  }
  //打印碼表
  printf("nn◎碼表-編碼字典(%d項)n", data_num);
  for (i=0; i<256; i++) {
    if (code_table[i].codelength) {
      printf("%3d|%02X: ", i, i);
      for (j=0; j<code_table[i].codelength; j++) {
        printf("%d", ((code_table[i].code << j)&0x80)>>7);
      }
      printf("t");
    }
  }
  printf("nn◎壓縮率:%2.0f%% t壓縮時間:%.3f毫秒n",(float)code_size/DNUM * 100, 1E3*(time2-time1)/LOOP);
}
void BitPrint(unsigned char *hfcode)
{
  int i, j;
  int endbit = last_bit;
  unsigned char thebyte;
  for (i=0; i < code_size-1; i++) {
    thebyte = hfcode[i];
    for (j=0; j<8; j++) {
      printf("%d", ((thebyte<<j)&0x80)>>7);
    }
  }
  if (last_bit == 7) {
    endbit = -1;
  }
  thebyte = hfcode[i];
  for (j=7; j>endbit; j--) {
    printf("%d", ((thebyte<<(7-j))&0x80)>>7);
  }
}
void HuffmanCompress(unsigned char *pixel, unsigned char *hfcode, HuffCode * code_table)
{
  int i, j;
  int curbit=7; //current bit in _thebyte_
  unsigned int bytenum=0; //number of destination code can also be position of byte processed in destination
  unsigned int ptbyte=0; //position of byte processed in destination
  unsigned int curlength; //code's length of _curcode_
  unsigned char curcode; //current byte's huffman code
  unsigned char thebyte=0; //destination byte write
  unsigned char value; //current byte's value (pixel[])
  //process every byte
  for (i=0; i<DNUM; i++) {
    value = pixel[i];
    curcode = (code_table[value]).code;
    curlength = (code_table[value]).codelength;
    //move out every bit from curcode to destination
    for (j=0;j<=curlength;j++) {
      if ((curcode<<j)&0x80) {
        thebyte |= (unsigned char)(0x01<<curbit);
      }
      curbit --;
      if (curbit < 0) {
        hfcode[ptbyte++] = thebyte;
        thebyte = 0;
        curbit = 7;
        bytenum ++;
      }
    }
  }
  //think about which bit is the end
  if (curbit != 7) {
    hfcode[ptbyte] = thebyte;
    bytenum ++;
  }
  code_size = bytenum;
  last_bit = curbit;
}
void HuffmanCodeTable(HuffNode *hfdata, HuffCode *code_table)
{
  int i, j; //variable for loop
  int tree_num = 2*data_num - 1; //node of huffman tree
  int min1, min2; //two minimum weight
  int p; //the id of parent node
  unsigned char curcode; //current code being processing
  int curlength; //current code's length
  //build huffman tree
  for (i=data_num; i<tree_num; i++) {
    HuffSelect(hfdata, i, &min1, &min2);
    hfdata[min1].parent = i+1;
    hfdata[min2].parent = i+1;
    hfdata[i+1].lchild = min1;
    hfdata[i+1].rchild = min2;
    hfdata[i+1].weight = hfdata[min1].weight + hfdata[min2].weight;
  }
  //generate huffman code
  //i present the i th code, j present from leaf to root in huffman tree
  //hfdata[i].data (0:255) is a byte number
  //編碼從葉讀到根,按位從高往低壓入一個字節(jié),讀編碼從左向右
  for (i=1; i<=data_num; i++) {
    curcode = 0;
    curlength = 0;
    for (j=i, p=hfdata[j].parent; p!=0; j=p, p=hfdata[j].parent) {
      curlength ++;
      if (j==hfdata[p].lchild) curcode >>= 1;
      else curcode = (curcode >> 1) | 0x80; //0x80 = 128 = B1000 0000
    }
    code_table[hfdata[i].data].code = curcode;
    code_table[hfdata[i].data].codelength = curlength;
  }
}
void HuffSelect(HuffNode *hfdata, int end, int *min1, int *min2)
{
  int i; //variable for loop
  int s1, s2;
  HuffNode wath[30];
  for (i=0; i<30; i++) {
    wath[i] = hfdata[i];
  }
  s1 = s2 = 1;
  while (hfdata[s1].parent) {
    s1++;
  }
  for (i=2; i<=end; i++) {
    if (hfdata[i].parent == 0 && hfdata[i].weight < hfdata[s1].weight) {
      s1 = i;
    }
  }
  while (hfdata[s2].parent || s1 == s2) {
    s2++;
  }
  for (i=1; i<=end; i++) {
    if (hfdata[i].parent ==0 && hfdata[i].weight < hfdata[s2].weight && (i - s1)) {
      s2 = i;
    }
  }
  *min1 = s1;
  *min2 = s2;
}
void FrequencyCount(unsigned char *chs)
{
  int i;
  for (i=0; i<DNUM; i++) {
    fCount[*(chs+i)] ++;
  }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人黄页在线观看| 日日摸夜夜添夜夜添精品视频| 国产麻豆精品theporn| 日韩欧美色电影| 国内欧美视频一区二区| 久久久久国产精品麻豆ai换脸| 国产传媒一区在线| 中文字幕中文字幕中文字幕亚洲无线| gogo大胆日本视频一区| 亚洲综合色视频| 日韩精品一区二区三区视频在线观看| 极品少妇xxxx精品少妇偷拍| 国产女主播在线一区二区| 色综合中文字幕| 日本女人一区二区三区| 国产午夜精品美女毛片视频| 色吊一区二区三区| 美女视频免费一区| 中文字幕一区二区三区精华液 | 日韩午夜电影在线观看| 国产一区二区三区四区在线观看| 中文字幕+乱码+中文字幕一区| 日本福利一区二区| 精品在线一区二区| 亚洲免费观看高清完整版在线观看| 欧美精品自拍偷拍| 成人动漫中文字幕| 天天色图综合网| 国产精品久久久久久久久快鸭| 欧美精品日韩精品| 成人的网站免费观看| 午夜精品123| 国产精品视频线看| 欧美一区欧美二区| 91免费视频网址| 精久久久久久久久久久| 亚洲成人免费视| 中文字幕亚洲在| 日韩精品中文字幕一区二区三区 | 日本女人一区二区三区| 国产精品理论片在线观看| 欧美日韩成人综合在线一区二区| 成人黄色软件下载| 狠狠狠色丁香婷婷综合激情| 亚洲国产cao| 国产精品久久久久久久久免费桃花| 日韩一区二区视频| 欧美视频一二三区| 99热在这里有精品免费| 国产呦精品一区二区三区网站| 亚洲高清视频在线| 亚洲欧美日本韩国| 欧美国产综合一区二区| 精品国产一区二区三区久久影院| 欧美日韩精品一区二区天天拍小说| 成人福利视频网站| 国产成人av电影在线| 精品一区二区影视| 理论片日本一区| 丝袜脚交一区二区| 亚洲一线二线三线视频| 亚洲女人****多毛耸耸8| 国产亚洲va综合人人澡精品| 欧美电影免费观看高清完整版在线观看| 日本韩国欧美三级| 91美女在线视频| 一本色道a无线码一区v| 99re这里只有精品视频首页| 成人免费看黄yyy456| 成人自拍视频在线观看| 国产精品一线二线三线精华| 九一九一国产精品| 精品一区二区在线播放| 久久99国产精品久久99果冻传媒| 日韩一区精品字幕| 中文字幕不卡在线观看| 337p粉嫩大胆色噜噜噜噜亚洲| 在线播放国产精品二区一二区四区| 欧美色精品天天在线观看视频| 欧美性大战久久久久久久蜜臀| 91美女片黄在线观看| 色www精品视频在线观看| 91美女在线视频| 欧亚洲嫩模精品一区三区| 精品视频一区二区三区免费| 欧美日韩国产成人在线免费| 在线成人av网站| 91麻豆精品国产91久久久资源速度| 91精品国产色综合久久不卡蜜臀| 91麻豆精品国产91久久久使用方法| 欧美精品99久久久**| 一区二区在线免费| 一区二区三区中文免费| 亚洲一区二区三区爽爽爽爽爽| 香蕉影视欧美成人| 免费人成网站在线观看欧美高清| 免费成人av在线| 国产精品夜夜爽| 91欧美一区二区| 制服丝袜av成人在线看| wwww国产精品欧美| 亚洲男人的天堂网| 青娱乐精品在线视频| 久久99精品一区二区三区| 成人免费福利片| 欧美综合在线视频| 2021久久国产精品不只是精品| 国产精品狼人久久影院观看方式| 亚洲三级久久久| 另类欧美日韩国产在线| 99久久综合国产精品| 欧美福利一区二区| 国产亚洲一本大道中文在线| 亚洲精品成人天堂一二三| 看电影不卡的网站| 一本一道久久a久久精品| 欧美一区二区三区免费观看视频| 久久久激情视频| 亚洲国产成人91porn| 国产乱码一区二区三区| 色综合天天视频在线观看| 日韩限制级电影在线观看| 国产精品三级视频| 水野朝阳av一区二区三区| 大尺度一区二区| 91精品国产手机| 亚洲女女做受ⅹxx高潮| 国产夫妻精品视频| 欧美丰满少妇xxxxx高潮对白| 国产女人水真多18毛片18精品视频| 亚洲图片有声小说| 成人妖精视频yjsp地址| 欧美成人a视频| 亚洲a一区二区| 成人av在线资源网站| 欧美精品一区二区三区蜜桃视频 | 欧美亚洲高清一区| 国产丝袜在线精品| 久久疯狂做爰流白浆xx| 欧美图区在线视频| 亚洲色图在线看| 国产不卡视频在线观看| 欧美大片国产精品| 婷婷开心激情综合| 欧美中文字幕一区| 亚洲欧美影音先锋| 国产成人在线电影| 久久夜色精品国产欧美乱极品| 亚洲国产美女搞黄色| 91最新地址在线播放| 欧美国产国产综合| 国产精品996| 国产亚洲午夜高清国产拍精品 | 91日韩一区二区三区| wwwwww.欧美系列| 日韩av成人高清| 欧美三级韩国三级日本三斤| 亚洲精品国产一区二区精华液 | 国模冰冰炮一区二区| 91精品欧美一区二区三区综合在| 亚洲一区在线观看网站| 91麻豆视频网站| 亚洲婷婷综合色高清在线| 99精品国产91久久久久久| 国产精品超碰97尤物18| 99久久精品免费| 亚洲欧美激情视频在线观看一区二区三区| 粉嫩蜜臀av国产精品网站| 国产欧美精品在线观看| 成人免费视频播放| 亚洲日本欧美天堂| 欧美在线一区二区三区| 水蜜桃久久夜色精品一区的特点| 欧美日韩视频在线一区二区| 丝瓜av网站精品一区二区| 欧美日韩一级黄| 亚洲精品乱码久久久久| 91在线云播放| 一区二区三区.www| 在线成人免费视频| 美国三级日本三级久久99| 欧美精品一区视频| 成人综合婷婷国产精品久久 | 99re成人精品视频| 亚洲免费av观看| 欧美美女一区二区在线观看| 久久精品理论片| 久久久国产午夜精品| 99久久综合精品| 午夜久久福利影院| 久久美女艺术照精彩视频福利播放| 国产成人av网站| 一区二区三区高清| 91麻豆精品国产91久久久久| 国产在线看一区| 自拍偷拍亚洲欧美日韩| 欧美精选午夜久久久乱码6080| 国产麻豆91精品| 亚洲精品成人精品456| 日韩精品在线一区二区|