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

📄 arithmetic.h

📁 几种常用的压缩算法 本程序包含以下功能: 1、 Arithmetic coding 2、 Huffman coding 3、 LZ77 coding 4、 LZ78 coding 5、 L
💻 H
字号:
#ifndef __ARITHMETIC_H#define __ARITHMETIC_H#include "Gendef.h"class CArithmetic{private:	DWORD	let[256];		// array of probabilities for every leter	DWORD	acc[256];		// array of accumulative probabilities (acc[0] = 0)	DWORD	sum;			// sum of contence in array let or acc[255]+let[255]	long	underflow;		// counter for underflow - bits	DWORD	msb;			// msb for BITS_CODE bits number	DWORD	msb2;			// msb for (BITS_CODE-1) bits number	DWORD	filler;			// mask with BITS_CODE one`sprivate:	// source can`t be more then 2^28 bytes (2^28 = 268435456)	inline BYTE bitin(void *source, long &soffset);	inline void bitout(void *target, long &toffset, BYTE source);		void InitAll(BYTE filler);	int InitLet(BYTE *source, long length);	inline void UpdateAccByLet();		inline BYTE FindInRange(DWORD start, DWORD end, DWORD point);	inline DWORD GetStartPoint(DWORD start, DWORD end, BYTE leter);	inline DWORD GetEndPoint(DWORD start, DWORD end, BYTE leter);		void FlashEncoder(DWORD code, BYTE *target, long &toffset);	void LoadTable(BYTE *source, long &offset);	void SaveTable(BYTE *target, long &offset);	DWORD LoadFirstCode(BYTE *source, long &offset);		long EncodeOnce(DWORD &start, DWORD &end, BYTE *target, long &toffset, BYTE source);	long DecodeOnce(DWORD &start, DWORD &end, BYTE *target, BYTE *source, long &soffset, DWORD &code);public:	CArithmetic();	virtual ~CArithmetic();		void Encode(BYTE *target, long &tlen, BYTE *source, long slen);	long Decode(BYTE *target, long &tlen, BYTE *source, long slen);	long GetMaxEncoded(long len);	long GetMaxDecoded(BYTE *source);		virtual void OnStep() = 0;};
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -