64,651
社区成员
发帖
与我相关
我的任务
分享
void HexDump(char *buf,int len) {
int i,j,k;
char binstr[80];
for (i=0;i<len;i++) {
if (0==(i%16)) {
sprintf(binstr,"%04x -",i);
sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
} else if (15==(i%16)) {
sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
sprintf(binstr,"%s ",binstr);
for (j=i-15;j<=i;j++) {
sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
}
printf("%s\n",binstr);
} else {
sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
}
}
if (0!=(i%16)) {
k=16-(i%16);
for (j=0;j<k;j++) {
sprintf(binstr,"%s ",binstr);
}
sprintf(binstr,"%s ",binstr);
k=16-k;
for (j=i-k;j<i;j++) {
sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
}
printf("%s\n",binstr);
}
}
[2013-11-28-15_24_17]:[Info][ThreadId=6576]接收客户端-924-消息:
MEMADDR ---1--2--3--4---5--6--7--8--Hex-2--3--4---5--6--7--8 ---ASCII CODE---
00BE9060 - 0E 00 00 00 00 00 00 00 00 03 00 01 00 02 ..............
[2013-11-28-15_24_17]:[Info][ThreadId=6576]发送客户端-924-消息:
MEMADDR ---1--2--3--4---5--6--7--8--Hex-2--3--4---5--6--7--8 ---ASCII CODE---
00BEB0A0 - 22 00 9C 03 00 00 00 00 01 17 00 04 00 02 00 B7 "...............
00BEB0B0 - FE CE F1 C6 F7 B7 B1 C3 A6 21 00 00 00 00 00 00 .........!......
00BEB0C0 - 00 00 ..
[2013-11-28-15_24_17]:[Info][ThreadId=6576]接收客户端-924-消息:
MEMADDR ---1--2--3--4---5--6--7--8--Hex-2--3--4---5--6--7--8 ---ASCII CODE---
030AD198 - 21 00 00 00 00 00 00 00 00 16 00 5F 00 02 78 9C !.........._..x.
030AD1A8 - 3B 53 9C C8 70 06 0D 18 1A 62 08 01 00 10 85 1B ;S..p....b......
030AD1B8 - 83 .
[2013-11-28-15_24_17]:[Info][ThreadId=6576]发送客户端-924-消息:
MEMADDR ---1--2--3--4---5--6--7--8--Hex-2--3--4---5--6--7--8 ---ASCII CODE---
00BE9060 - 22 00 9C 03 00 00 00 00 03 17 00 04 00 02 00 B7 "...............
00BE9070 - FE CE F1 C6 F7 B7 B1 C3 A6 21 00 00 00 00 00 00 .........!......
00BE9080 - 00 00 ..
//传入源地址,长度,输出目的地址
int ForMatBin(char* pDestBuf,char* pSrcBuf,int iSrcLen)
{
int iRet = SR_FAILED;
if (NULL == pDestBuf || NULL == pSrcBuf)
{
return iRet;
}
int nAddr = 0;
int nLineCount = 0;
int n = 0;
int nBufferCount = iSrcLen;
char szLine[256] = {0};
if( 0 < iSrcLen)
{
while(1)
{
n = 0;
n += ForMatString(szLine + n,256 - n,"%p - ",pSrcBuf + nAddr);
nLineCount = 16;
if(nBufferCount < nLineCount)
{
nLineCount = nBufferCount;
}
n += StringToHex(szLine + n,pSrcBuf + nAddr,nLineCount);
int iCount = 16 - nLineCount;
if (iCount != 0)
{
memset(&szLine[n],32,iCount*2);
}
n += StringToAsci(szLine + n + iCount*2,pSrcBuf + nAddr,nLineCount);
strcat(pDestBuf,szLine);
strcat(pDestBuf,"\n");
nAddr += 16;
nBufferCount -= 16;
if(0 >= nBufferCount)
{
break;
}
}
}
return iRet;
}
int ForMatString(char* pDestBuf,int iMaxDestLen,char* pBuffer,...)
{
int iRet = SR_FAILED;
int iListCount = 0;
if (NULL == pDestBuf || NULL == pBuffer)
{
return iRet;
}
va_list pArgList;
va_start(pArgList,pBuffer);
iListCount += _vsnprintf(pDestBuf + iListCount,iMaxDestLen - iListCount,pBuffer,pArgList);
va_end(pArgList);
if(iListCount > (iMaxDestLen - 1))
{
iListCount = iMaxDestLen - 1;
}
*(pDestBuf + iListCount) = '\0';
iRet = iListCount;
return iRet;
}
int StringToHex(char* pDestBuf,char* pSrcBuf,int iSrcLen)
{
int iRet = SR_FAILED;
int i = 0;
int j = 0;
if (NULL == pDestBuf || NULL == pSrcBuf)
{
return iRet;
}
for(i = 0;i < iSrcLen; i++)
{
iRet += ForMatString(pDestBuf + iRet,256,"%02X ",(unsigned char)*(pSrcBuf + i));
j++;
if(4 == j)
{
j = 0;
iRet += ForMatString(pDestBuf + iRet,256," ");
}
}
if(16 > iSrcLen)
{
for( ;i < 16;i++)
{
iRet += ForMatString(pDestBuf + iRet,256," ");
j++;
if(4 == j)
{
j = 0;
iRet += ForMatString(pDestBuf + iRet,256," ");
}
}
}
return iRet;
}
int StringToAsci(char* pDestBuf,char* pSrcBuf,int iSrcLen)
{
int iRet = SR_FAILED;
if (NULL == pDestBuf || NULL == pSrcBuf)
{
return iRet;
}
for(int i = 0; i < iSrcLen; i++)
{
//ASCII 字符表中,可显示字符代码>32
if(32 <= *(pSrcBuf + i))
{
iRet += ForMatString( pDestBuf + iRet, 256, "%c", *(pSrcBuf + i));
}
else
{
iRet += ForMatString( pDestBuf + iRet, 256, ".");
}
}
return iRet;
}