bueddl

hexdump

Jun 4th, 2015
293
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.10 KB | None | 0 0
  1. void print_hexdump(unsigned char *data, int data_len, int off)
  2. {
  3.     int line, offset, m;
  4.     const int digits = ceil(log(data_len / 16.0) / log(16)) + 1;
  5.  
  6.     for (line = 0; line < data_len; line += 16) {
  7.         printf("        %0*X   ", digits, line + off);
  8.         for (m = 0; m <= 1; m++) {
  9.             for (offset = 0; offset < 16; offset++) {
  10.                 if (line + offset < data_len)
  11.                     switch (m) {
  12.                         case 0:
  13.                             printf("%02x ", data[line + offset]);
  14.                             break;
  15.  
  16.                         case 1:
  17.                             if (data[line + offset] >= 0x20 && data[line + offset] <= 0x7E)
  18.                                 printf("%c", data[line + offset]);
  19.                             else
  20.                                 printf(".");
  21.                             break;
  22.                     }
  23.                 else
  24.                     printf("   ");
  25.  
  26.                 if (offset % 8 == 7)
  27.                     printf(" ");
  28.             }
  29.             printf("  ");
  30.         }
  31.         printf("\n");
  32.     }
  33. }
Add Comment
Please, Sign In to add comment