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

📄 rle.cpp

📁 RLE8压缩和解压缩算法 用VS2005开发
💻 CPP
字号:
#define DLL_PhiL_Cheng_EXPORTS
#include "RLE.h"


DWORD WINAPI EnCode_RLE(const HANDLE pSour,HANDLE pDest,DWORD SourLen)
{
	register DWORD i,j,k;
	DWORD at=0;
	const LPBYTE p=(LPBYTE) pSour;
	LPBYTE pW=(LPBYTE) pDest;
	BYTE Begin;

	if (!SourLen) return 0;
	for (i=0;i<SourLen;i++)
	{
		Begin=p[i];
		for (j=i+1,k=0 ; k<62 &&j<SourLen; j++,k++)
		{
			if (Begin!=p[j]) break;
		}
		if (k) 
		{
			i+=k;
			pW[at++]=(BYTE)(0xc1+k);
			pW[at++]=Begin;
		}
		else
		{
			if (Begin>=0xc1)
			{
				pW[at++]=0xc1;
				pW[at++]=Begin;
			}
			else pW[at++]=Begin;
		}
		if (at>=SourLen) return 0;
	}
	return at;
}

DWORD WINAPI DeCode_RLE(const HANDLE pSour,HANDLE pDest,DWORD SourLen)
{
	register DWORD i,j;
	DWORD k,at=0;
	const LPBYTE p=(LPBYTE) pSour;
	LPBYTE pW=(LPBYTE) pDest;
	BYTE Begin;
	if (!SourLen) return 0;
	for (i=0;i<SourLen;i++)
	{
		Begin=p[i];
		if (Begin>=0xc1)
		{
			if (++i>=SourLen) return 0;
			k=Begin-0xc0;
			for (j=0;j<k;j++) pW[at++]=p[i];
		}
		else pW[at++]=Begin;
	}
	return at;
}

⌨️ 快捷键说明

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