SW 개발

[C] 로그파일을 위한 hexdump 코드 예제

. . . 2020. 4. 29. 17:50
반응형

hexdump 를 하기위한 예제를 검색하다가 .. 좋은코드가있어 공유한다.

예제코드

예제코드...

void DumpHex(const void* data, int size) {
  char ascii[17];
  int i, j;
  ascii[16] = '\0';
  for (i = 0; i < size; ++i) {
    printf("%02X ", ((unsigned char*)data)[i]);
    if (((unsigned char*)data)[i] >= ' ' && ((unsigned char*)data)[i] <= '~') {
      ascii[i % 16] = ((unsigned char*)data)[i];
    } else {
      ascii[i % 16] = '.';
    }
    if ((i+1) % 8 == 0 || i+1 == size) {
      printf(" ");
      if ((i+1) % 16 == 0) {
        printf("|  %s \n", ascii);
      } else if (i+1 == size) {
        ascii[(i+1) % 16] = '\0';
        if ((i+1) % 16 <= 8) {
          printf(" ");
        }
        for (j = (i+1) % 16; j < 16; ++j) {
          printf("   ");
        }
        printf("|  %s \n", ascii);
      }
    }
  }
}

사용방법

다음과같이 사용가능하다.

void main()
{
  char test[128];
  memset(test, 0xA1, 128);
  DumpHex(test,128);
}

실행예제

A1 A1 A1 A1 A1 A1 A1 A1  A1 A1 A1 A1 A1 A1 A1 A1  |  ................
A1 A1 A1 A1 A1 A1 A1 A1  A1 A1 A1 A1 A1 A1 A1 A1  |  ................
A1 A1 A1 A1 A1 A1 A1 A1  A1 A1 A1 A1 A1 A1 A1 A1  |  ................
A1 A1 A1 A1 A1 A1 A1 A1  A1 A1 A1 A1 A1 A1 A1 A1  |  ................
A1 A1 A1 A1 A1 A1 A1 A1  A1 A1 A1 A1 A1 A1 A1 A1  |  ................
A1 A1 A1 A1 A1 A1 A1 A1  A1 A1 A1 A1 A1 A1 A1 A1  |  ................

굿.

반응형