📄 rle.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 + -