两段代码,大家能帮忙提高一下下率吗?

adminhy 2008-06-28 12:13:49
void H2B(char* szTxt,unsigned char * bBuf,unsigned int unLen)
{
char * pTxt = szTxt;
size_t nLen = 0;

if( !szTxt || !bBuf || unLen < (nLen = strlen(szTxt)/2) || strlen(szTxt) % 2 )
{
return;
}

for(size_t i = 0 ; i < nLen ; i++)
{
unsigned char * punBuf = bBuf;
char* cIn = pTxt;

if(cIn[0] >= 0x30 && cIn[0]<0x40)
{
*punBuf = (cIn[0] - 0x30)*16;
}
else
{
*punBuf = (cIn[0] - 0x37)*16;
}

if(cIn[1] >= 0x30 && cIn[1]<0x40)
{
*punBuf += (cIn[1] - 0x30);
}
else
{
*punBuf += (cIn[1] - 0x37);
}

pTxt += 2;
bBuf++;
}
}

void B2H(unsigned char * punBuf,unsigned int unBufLen,char* szOut,unsigned int unTxtLen)
{
static char szTab[] = "0123456789ABCDEF";

if(unBufLen*2 >= unTxtLen || !punBuf || !szOut )
{
return;
}

while(unBufLen--)
{
unsigned char unBuf = *punBuf;
char* cOut = szOut;
int nPos = 1;
while(nPos>=0)
{
cOut[nPos--] = szTab[unBuf % 16];
unBuf = unBuf / 16;
}
szOut += 2;
punBuf++;
}
}

int _tmain(int argc, _TCHAR* argv[])
{
char szTxt[] = "18A17B16C";
unsigned char szBuf[5];
memset(szBuf,0,sizeof(szBuf));
char szDes[11];
memset(szDes,0,sizeof(szDes));

H2B(szTxt,szBuf,sizeof(szBuf));
B2H(szBuf,sizeof(szBuf),szDes,sizeof(szDes));

printf("%s\n",szDes);

HANDLE hHandle = ::GetCurrentProcess();
BYTE buf[8193];
char szHexTxt[24576];
memset(szHexTxt,0,sizeof(szHexTxt));
memset(buf,0,sizeof(buf));
::ReadProcessMemory(hHandle,&_tmain,buf,sizeof(buf),NULL);
B2H(buf,sizeof(buf),szHexTxt,sizeof(szHexTxt));
printf("%s\n",szHexTxt);

getchar();
return 0;
}
////////
...全文
50 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

64,632

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧