| lzw压缩算法的c语言实现 |
|
|
|
|
| 来源: 作者: 添加日期:2006-7-17 6:53:04 点击次数: |
|
HANDLE h_stack; LPBYTE lp_stack;
}STACK_DATA,*PSTACK_DATA; //------------------------------------------------------------------------------ VOID stack_create( PSTACK_DATA stack ) { stack->h_stack = GlobalAlloc( GHND , TABLE_LEN*sizeof(BYTE) ); stack->lp_stack = GlobalLock( stack->h_stack ); stack->index = 0; } //------------------------------------------------------------------------------ VOID stack_destory( PSTACK_DATA stack ) { GlobalUnlock( stack->h_stack ); GlobalFree ( stack->h_stack ); } //------------------------------------------------------------------------------ VOID buffer_create( PBUFFER_DATA buffer ) { buffer->h_buffer = GlobalAlloc( GHND, BUFFERSIZE*sizeof(BYTE) ); buffer->lp_buffer = GlobalLock( buffer->h_buffer ); buffer->top = 0; buffer->index = 0; buffer->by_left = 0; buffer->dw_buffer = 0; buffer->end_flag = FALSE; } //------------------------------------------------------------------------------ VOID buffer_destory( PBUFFER_DATA buffer ) { GlobalUnlock( buffer->h_buffer ); GlobalFree ( buffer->h_buffer ); } //------------------------------------------------------------------------------ VOID re_init_lzw( PLZW_DATA lzw ) //When code table reached its top it should { //be reinitialized. memset( lzw->lp_code, 0xFFFF, TABLE_LEN*sizeof(WORD) ); lzw->code = LZW_BASE; lzw->cur_code_len = 9; } //------------------------------------------------------------------------------ VOID lzw_create(PLZW_DATA lzw, HANDLE h_sour, HANDLE h_dest) { WORD i; lzw->h_code = GlobalAlloc( GHND, TABLE_LEN*sizeof(WORD) ); lzw->h_prefix = GlobalAlloc( GHND, TABLE_LEN*sizeof(WORD) ); lzw->h_suffix = GlobalAlloc( GHND, TABLE_LEN*sizeof(BYTE) ); lzw->lp_code = GlobalLock( lzw->h_code ); |
|
| |