-
Notifications
You must be signed in to change notification settings - Fork 29
/
debug.c
48 lines (33 loc) · 822 Bytes
/
debug.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "debug.h"
#include <stdio.h>
#include <string.h>
#ifdef DEBUG
static const unsigned char hextable[]="0123456789abcdef";
void hexdump(void *data, size_t len)
{
char hex[77];
unsigned ch;
size_t i = 0, total, hexoffset, choffset;
while (i < len) {
hexoffset = 19;
choffset = 60;
sprintf(hex, "%016lx:", (unsigned long)((char *)data + i));
memset(hex+17, ' ', 43);
total = i + 16;
if (total > len) {
total = len;
}
while (i < total) {
ch = ((unsigned char *)data)[i];
hex[choffset++] = (ch > ' ' && ch <= '~') ? ch : '.';
hex[hexoffset++] = hextable[ch / 16];
hex[hexoffset++] = hextable[ch % 16];
if(i % 2) hexoffset++;
i++;
}
hex[choffset] = 0x0;
printf("%s\r\n", hex);
}
printf("%016lx\r\n", (unsigned long)((char *)data + i));
}
#endif /* DEBUG */