內存區域dump

程序調試中,經常需要輸出內存信息,以便進一步分析,

下面是我寫的一個簡單的輸出函數

//

//sprintf(hex+i*3,"%02X ",str[i]&0xFF); 
//printf("0x%-3.2s",in + size * cur);中 "%-3.2s"表示輸出字符串,
//寬度爲3,精度爲2(精度表示最多輸出兩個字符,多的捨去)左對齊,右填充空格。


//size: 轉換多少字節的數據爲字符串
//outstrlen: 輸出空間大小,其實可以不要此參數,但爲了安全起見添加了。
//
char* HextoStr(BYTE* buff,size_t size,char *pOutStr,size_t outstrlen)
{
int i=0;
char hexstr[]={"0123456789abcdef"};


//檢查輸出空間
if(outstrlen < size*3)
{
size=outstrlen/3;
}


if (buff == NULL || size==0 )
{
return "";
}


for(;i<size;i++,buff++)
{
pOutStr[i*3]=hexstr[*buff >> 4];
pOutStr[i*3+1]=hexstr[*buff & 0x0F];
pOutStr[i*3+2]=' ';
}
pOutStr[i*3-1] = 0;
return pOutStr;
}




用法:
{
char szInfo[128],szTemp[64];
sprintf(szInfo,"\n_CacheRead:%d,%s",size,HextoStr(buffer,24,szTemp,64));
OutputDebugStringA(szInfo);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章