blob: be7083cefc3929a18955b080ac1f7b8234cb6786 (
plain)
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
|
#include <stdio.h>
#include <ctype.h>
#include "util.h"
void xxd(const void *buf_, size_t length) {
unsigned char *buf = (unsigned char*)buf_;
for (size_t cursor = 0; cursor < length;) {
printf("%08zx:", cursor);
for (int i = 0; i < 16; i++) {
if (i % 2 == 0) printf(" ");
if (i % 8 == 0) printf(" ");
if (cursor + i < length) printf("%02x", (unsigned)buf[cursor + i]);
else printf(" ");
}
printf(" |");
for (int i = 0; i < 16 && cursor + i < length; i++) {
if (isprint(buf[cursor + i])) printf("%c", buf[cursor + i]);
else printf(".");
}
printf("|\n");
cursor += 16;
}
}
|