rle.cpp
来自「RLE8压缩和解压缩算法 用VS2005开发」· C++ 代码 · 共 61 行
CPP
61 行
#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 + =
减小字号Ctrl + -
显示快捷键?