• 大小: 371KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-23
  • 语言: 其他
  • 标签:

资源简介

LZ77数据无损压缩算法,可以说实现数据的压缩和解压

资源截图

代码片段和文件信息

/*******************************************
 *                                         *
 *      Lempel-Ziv 77 Data Compressor      *
 *      Demo Program by Rachad ALAO        *
 *      ENST / Telecom Copyright 1997      *
 *                                         *
 *******************************************/

#include 
#include 
#include 
#include 

struct Match {
        int Length;
        int Pointer;
        };


/* look ahead buffer size */
int N = 512;


/* look ahead buffer size in bits */
int NB = 9;


/* input words buffer size */
int M = 32;


/* Words Buffer size in bits */
int MB = 5;


/* The Words Buffer and base of the Allocated memory */
unsigned char *Buffer *base;
/* Number of words in the Word Buffer used to handle the eof */
int           NW = 0;

/* The ascii Probabilities Board */
unsigned long Proba[256];


/***********************************************************************
                         My Bit File library
 ***********************************************************************/

#define Cache_Size 20000
#define Error -1
#define Ok 1

struct BFILE {
        FILE *f;                          /* The physical file                   */
        unsigned char Cache[Cache_Size];  /* The Cache used to acces the File    */
        unsigned char CByte;              /* The Current Word being written      */
        int  CBPos;                       /* Current Pos. in the Current Word    */
        unsigned int CPos;                /* Current Pos. in the Cache           */
        unsigned int CEnd;                /* Cache End if not full               */
        char Mode;                        /* R = Read W = Write                 */
        char eof;                         /* !=0 if end of file                  */
        };


/**** Opens a Bit File ****/
struct BFILE *BF_Open ( const char *Name const char Mode)
{ struct BFILE *Tmp;
  char FMode[3];

Tmp = (struct BFILE * )malloc(sizeof(struct BFILE));
if (!Tmp)
   return NULL;

FMode[0] = Mode;
FMode[1] = ‘b‘;
FMode[2] = ‘\0‘;

Tmp->f = fopen(Name FMode);

if (Tmp->f) {
   Tmp->Mode = Mode;

   if (Mode == ‘r‘ ) {
      /* Fills the bit file cache if in R mode*/
      Tmp->CEnd  = fread (Tmp->Cache sizeof(unsigned char) Cache_Size Tmp->f);
      Tmp->CByte = Tmp->Cache[0];
      Tmp->CBPos = 7;
      Tmp->CPos  = 1;
      Tmp->eof   = 0;
      }

   else {
      Tmp->CEnd  = 0;
      Tmp->CPos  = 0;
      Tmp->CBPos = 0;
      Tmp->CByte = 0;
      Tmp->eof   = 1;
      }
   }
else {
     free (Tmp);
     return NULL;
     }

return Tmp;

}




/**** Writes nbits bits in the BFILE *f ****/
int BF_Write ( unsigned long bits int nbits struct BFILE *f)
{ int i = 0;

if (!f || f->Mode != ‘w‘)
   return Error;

if (nbits > 8 * sizeof(unsigned long))
   nbits = 8 * sizeof (unsigned long);

for (i =

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      18377  2011-11-21 20:46  LZ773\code\lz77.c

     文件      59904  2011-11-01 17:15  LZ773\pro\Debug\d.doc

     文件      59904  2011-11-21 20:50  LZ773\pro\Debug\dewq.doc

     文件     208983  2011-11-21 20:47  LZ773\pro\Debug\lz77.exe

     文件     231328  2011-11-21 20:47  LZ773\pro\Debug\lz77.ilk

     文件      36322  2011-11-21 20:46  LZ773\pro\Debug\lz77.obj

     文件     201608  2011-11-21 20:46  LZ773\pro\Debug\lz77.pch

     文件     492544  2011-11-21 20:53  LZ773\pro\Debug\lz77.pdb

     文件      14542  2011-11-21 20:49  LZ773\pro\Debug\qq

     文件      33792  2011-11-21 21:38  LZ773\pro\Debug\vc60.idb

     文件      53248  2011-11-21 20:46  LZ773\pro\Debug\vc60.pdb

     文件       3433  2011-11-21 20:55  LZ773\pro\lz77.dsp

     文件        533  2011-11-21 20:35  LZ773\pro\lz77.dsw

     文件      50176  2011-11-21 21:51  LZ773\pro\lz77.ncb

     文件      48640  2011-11-21 21:51  LZ773\pro\lz77.opt

     文件        242  2011-11-21 21:38  LZ773\pro\lz77.plg

     文件        713  2011-11-21 20:55  LZ773\readme.txt

     文件      59904  2011-11-01 17:15  LZ773\test\d.doc

     文件      59904  2011-11-21 20:50  LZ773\test\dewq.doc

     文件     208987  2011-11-21 20:53  LZ773\test\lz77.exe

     文件     224608  2011-11-21 20:53  LZ773\test\lz77.ilk

     文件      14542  2011-11-21 20:49  LZ773\test\qq

     目录          0  2011-11-21 20:53  LZ773\code\Debug

     目录          0  2011-11-21 20:50  LZ773\pro\Debug

     目录          0  2011-11-21 20:53  LZ773\code

     目录          0  2011-11-21 21:51  LZ773\pro

     目录          0  2011-11-21 20:53  LZ773\test

     目录          0  2011-11-21 20:55  LZ773

----------- ---------  ---------- -----  ----

              2082234                    28

............此处省略1个文件信息

评论

共有 条评论

相关资源