记录下,有时要打日志用
#ifndef hexdump_h
#define hexdump_h
#include <SYS\TIMEB.H> //windows加入此头文件
#ifdef __cpluscplus
extern “C”
{
#endif
void hexDump (char *desc,void *addr,int len);
char* log_Time(void);
#ifdef __cplusplus
}
#endif
#endif /* hexdump_h */
#include <stdio.h>
#include “hexdump.h”
#include <sys/timeb.h>
#include <time.h>
char* log_Time(void)
{
struct tm *ptm;
struct timeb stTimeb;
static char szTime[19];
ftime(&stTimeb);
ptm = localtime(&stTimeb.time);
sprintf(szTime,“%02d-%02d %02d:%02d:%02d.%03d”,
ptm->tm_mon+1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, ptm->tm_sec, stTimeb.millitm);
szTime[18] =0;
return szTime;
}
#define SIZE 255
void hexDump (char *desc,void *addr,int len) {
int i;
unsignedchar buffLine[17];
unsignedchar *pc = (unsignedchar*)addr;
if (desc !=NULL){
printf (“%s %s:\n”,log_Time(), desc);
}
for (i =0; i < len; i++) {
if ((i %16) ==0) {
if (i !=0)
printf (” %s\n”, buffLine);
printf (“%04x “, i);
}
// Prints the HEXCODES that represent each chars.
printf (“%02x”, pc[i]);
if ((i %16) ==7)printf (” “);
printf (” “);
if ((pc[i] <0x20) || (pc[i] >0x7e)){
buffLine[i % 16] =‘.’;
}
else{
buffLine[i % 16] = pc[i];
}
buffLine[(i % 16) +1] =‘\0’;//Clears the next array buffLine
}
while ((i %16) !=0) {
printf (” “);
i++;
}
printf (” %s\n”, buffLine);
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。