c hexdump

来源:互联网 发布:怎么查手机网络密码 编辑:程序博客网 时间:2024/05/18 15:30


记录下,有时要打日志用


#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);

}


0 0
原创粉丝点击