⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unzip.h

📁 看到有兄弟提出的半透明算法
💻 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 + -