| lzw压缩算法的c语言实现 |
|
|
|
|
| 来源: 作者: 添加日期:2006-7-17 6:53:04 点击次数: |
|
1 程序由五个模块组成。
(1) lzw.h 定义了一些基本的数据结构,常量,还有变量的初始化等。
#ifndef __LZW_H__ #define __LZW_H__ //------------------------------------------------------------------------------ #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <memory.h> //------------------------------------------------------------------------------ #define LZW_BASE 0x102// The code base #define CODE_LEN 12 // Max code length #define TABLE_LEN 4099 // It must be prime number and bigger than 2^CODE_LEN=4096. // Such as 5051 is also ok. #define BUFFERSIZE 1024 //------------------------------------------------------------------------------ typedef struct { HANDLE h_sour; // Source file handle. HANDLE h_dest; // Destination file handle. HANDLE h_suffix; // Suffix table handle. HANDLE h_prefix; // Prefix table handle. HANDLE h_code; // Code table handle. LPWORD lp_prefix; // Prefix table head pointer. LPBYTE lp_suffix; // Suffix table head pointer. LPWORD lp_code; // Code table head pointer.
WORD code; WORD prefix; BYTE suffix;
BYTE cur_code_len; // Current code length.[ used in Dynamic-Code-Length mode ]
}LZW_DATA,*PLZW_DATA;
typedef struct { WORD top; WORD index;
LPBYTE lp_buffer; HANDLE h_buffer; BYTE by_left; DWORD dw_buffer;
BOOL end_flag;
}BUFFER_DATA,*PBUFFER_DATA;
typedef struct //Stack used in decode { WORD index; |
|
| |