📄 compressing.h
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -