📄 unzip.h
字号:
// UnZip.h: interface for the CUnZip class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_UNZIP_H__C4C65706_02DF_436F_A420_B12096F3CF6E__INCLUDED_)
#define AFX_UNZIP_H__C4C65706_02DF_436F_A420_B12096F3CF6E__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "Base.h"
#define _OUTPUT_STATUS
#define N 4096 /* size of ring buffer */
#define F 60 /* upper limit for match_length */
#define THRESHOLD 2 /* encode string into position and length
if match_length is greater than this */
#define NIL N /* index for root of binary search trees */
#define M 15
#define Q1 (1UL << M)
#define Q2 (2 * Q1)
#define Q3 (3 * Q1)
#define Q4 (4 * Q1)
#define MAX_CUM (Q1 - 1)
#define N_CHAR (256 - THRESHOLD + F)
class CUnZip : public CBase
{
public:
CUnZip();
virtual ~CUnZip();
public:
void UnCompress(byte *pInBuffer,int nInLength,
byte *&pOutBuffer ,int &nOutLength);
void Decode(void);
int DecodeChar(void);
int BinarySearchSym(unsigned int x);
void StartDecode(void);
void StartModel(void);
void UpdateModel(int sym);
int GetBit(void);
int DecodePosition(void);
int BinarySearchPos(unsigned int x);
void Release();
public:
// 解压缩数据
unsigned long low;
unsigned long high;
unsigned long value;
// int shifts; /* counts for magnifying low and high around Q2 */
int char_to_sym[N_CHAR];
int sym_to_char[N_CHAR + 1];
unsigned int sym_freq[N_CHAR + 1]; /* frequency for symbols */
unsigned int sym_cum[N_CHAR + 1]; /* cumulative freq for symbols */
unsigned int position_cum[N + 1]; /* cumulative freq for positions */
unsigned int buffer_putbit, mask_putbit;
unsigned int buffer_getbit, mask_getbit;
byte* m_pOutBuffer;
const byte *m_pInBuffer;
int m_nInLength;
int m_nInCur;
unsigned long textsize;
int m_nOutLength;
unsigned long printcount;
int m_nOutCur;
unsigned char text_buf[N + F - 1];
};
#endif // !defined(AFX_UNZIP_H__C4C65706_02DF_436F_A420_B12096F3CF6E__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -