常用函数库——调试函数

时间:2021-08-02 19:38:43

采用消息对话框以16进制的形式输出一段连续内存中的数据

应用环境:C++ MFC工程

void HexDump(char *buf, DWORD len, DWORD addr)
{
DWORD i,j,k;
CString strPrint;
for(i = 0; i < len, i++)
{
if(0 == i%16)
{
strPrint.Format("%08x -", i+addr);
strPrint.Format("%s %02x", strPrint,(unsigned char)buf[i]);
}
else if(15 == i%16)
{
strPrint.Format("%s %02x ", strPrint, (unsigned char)buf[i]);
for(j = i - 15; j <= i; j++)
{
strPrint.Format("%s%c", strPrint, buf[j]);
}
strPrint += "\n";
}
else
{
strPrint.Format("%s %02x", strPrint, (unsigned char)buf[i]);
}
}

if(0 != i%16)
{
k = 16 - i%16;
for(j = 0; j < k; j++)
{
strPrint += " ";
}
strPrint += " ";
k = 16 - k;
for(j = i - k; j < i; j++)
{
strPrint.Format("%s%c", strPrint, buf[j]);
}
strPrint += "\n";
}
AfxMessageBox(strPrint);
}