Skip to content

Instantly share code, notes, and snippets.

@pldubouilh
Forked from leonid-ed/hexDump.c
Last active September 20, 2018 13:52
Show Gist options
  • Save pldubouilh/1c20481a1c0f9aae0ed0125d79c5d001 to your computer and use it in GitHub Desktop.
Save pldubouilh/1c20481a1c0f9aae0ed0125d79c5d001 to your computer and use it in GitHub Desktop.
This function prints hex dump of memory specified as a pointer
/*
* This function prints hex dump of memory specified as a pointer.
* Reference: http://stackoverflow.com/questions/7775991/how-to-get-hexdump-of-a-structure-data
*/
#include <stdio.h>
void hexdump(void *addr, int len)
{
int i;
unsigned char buff[17];
unsigned char *pc = (unsigned char*)addr;
for (i = 0; i < len; i++) {
if ((i % 16) == 0) {
if (i != 0)
printf (" %s\n", buff);
printf (" %04x ", i);
}
printf (" %02x", pc[i]);
if ((pc[i] < 0x20) || (pc[i] > 0x7e))
buff[i % 16] = '.';
else
buff[i % 16] = pc[i];
buff[(i % 16) + 1] = '\0';
}
while ((i % 16) != 0) {
printf (" ");
i++;
}
printf (" %s\n", buff);
}
int main (int argc, char *argv[]) {
char my_str[] = "a char string greater than 16 chars";
hexdump (&my_str, sizeof (my_str));
return 0;
}
/*
0000 61 20 63 68 61 72 20 73 74 72 69 6e 67 20 67 72 a char string gr
0010 65 61 74 65 72 20 74 68 61 6e 20 31 36 20 63 68 eater than 16 ch
0020 61 72 73 00 ars.
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment