compressing.h
来自「Huffman/RLE archivator」· C头文件 代码 · 共 56 行
H
56 行
#include <queue>
//using namespace std;
//////////////////////////////////////////////////////////////////////////
struct TNode
{
TNode *parent;
TNode *left;
TNode *right;
bool real;
unsigned int rate;
unsigned char name;
};
struct SymbolInfo
{
unsigned long long mask;
int length;
unsigned int rate;
};
struct TNodeCompare
{
bool operator() (TNode* a, TNode* b)
{
return (a->rate > b->rate);
}
};
typedef std::priority_queue<TNode*, std::vector <TNode*>, TNodeCompare> TQueue;
//////////////////////////////////////////////////////////////////////////
void CompressHuffman(CString fileName, CString archName);
void DecompressHuffman(CString archName, CString fileName);
void InitQueue(TQueue *myQueue, SymbolInfo symbols[256], int *speciesCount);
void InitNode(TNode* newNode, unsigned char name, unsigned int rate,
TNode *parent, TNode *left, TNode *right);
void TreeForm(TQueue *myQueue);
void TreeRun(SymbolInfo symbols[256], TNode *curNode, unsigned long long mask, int length);
void WriteRatesToFile(FILE *file, SymbolInfo symbols[256], int count);
void WriteBytesToFile(FILE *in, FILE *out, SymbolInfo symbols[256]);
void ReadBytesFromArch(FILE *in, FILE *out, TNode *tree ,unsigned long long totalBytes);
void ReadRatesFromArch(FILE *file, SymbolInfo symbols[256]);
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
void CompressRLE(CString fileName, CString archName);
void DecompressRLE(CString archName, CString fileName);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?