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

📄 rle.cpp

📁 Huffman/RLE archivator
💻 CPP
字号:
#include "stdafx.h"
#include "compressing.h"
#include <fcntl.h>
#include <io.h>


void CompressRLE(CString fileName, CString archName)
{
	FILE *in = _wfopen(fileName, L"rb"); 
	FILE *out = _wfopen(archName, L"wb");
	unsigned char current;
	unsigned char prev;

	unsigned char counter = 0;
	int flag = fread(&prev, 1, 1, in);
	current = prev;
	while (flag > 0)
	{
		while (counter!=255 && current==prev && flag>0)
		{
			flag = fread(&current, 1, 1, in);
			counter++;
		}
		if (flag < 0)
			break;
		else 
		{
			fwrite(&counter, 1, 1, out);
			fwrite(&prev, 1, 1, out);
			counter = 0;
		}
		prev = current;
	}
	fclose(in);
	fclose(out);
}

void DecompressRLE(CString archName, CString fileName)
{
	FILE *in = _wfopen(archName, L"rb"); 
	FILE *out = _wfopen(fileName, L"wb");
	unsigned char count = 0;
	unsigned char symbol = 0;
	while (fread(&count, 1, 1, in) > 0)
	{
		fread(&symbol, 1, 1, in);
		for (int i=0; i < count; i++)
			fwrite(&symbol, 1, 1, out);
	}
	fclose(in);
	fclose(out);
}

⌨️ 快捷键说明

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