C/Hex Dump

From Attie's Wiki
Revision as of 10:36, 25 October 2013 by Attie (Talk | contribs)

Jump to: navigation, search

The following code will dump buffer that is bufferLen bytes long.

#define HEX_DUMP_WIDTH 16
 
int i;
char row[HEX_DUMP_WIDTH];
 
for (i = 0; i < bufferLen; i++) {
	if (i % HEX_DUMP_WIDTH == 0) {
		printf("0x%04X:", i);
	}
	row[i % HEX_DUMP_WIDTH] = (buffer[i] >= ' ' && buffer[i] <= '~' ? buffer[i] : '.');
	printf(" %02X", buffer[i]);
	if (i % HEX_DUMP_WIDTH == HEX_DUMP_WIDTH - 1) {
		printf(" | %*s\n", HEX_DUMP_WIDTH, row);
	}
}
if (i % 16 != 0) {
	for (; i % HEX_DUMP_WIDTH != 0; i++) {
		printf(" --");
		row[i % HEX_DUMP_WIDTH] = ' ';
	}
	printf(" | %16s\n", row);
}

The output will look like this:

0x0000: E2 80 B9 45 C3 BF 75 C3 A4 C3 BF 75 C3 BC E2 80 | ...E..u....u....
0x0010: B0 30 E2 80 B9 45 E2 80 B0 38 C3 BF 40 41 C3 BF | .0...E...8..@A..
0x0020: 75 C3 BC C3 BF 75 C3 BF C3 A8 42 41 E2 80 B9 C3 | u....u....BA....
0x0030: 87 5F 5E C3 89 C3 83 55 E2 80 B9 C3 AC C6 92 C3 | ._^....U........
0x0040: AC 64 E2 80 B9 45 48 74 54 2D E2 80 B9 45 75 C6 | .d...EHtT-...Eu.
0x0050: 92 C3 B8 74 37 C6 92 C3 B8 74 C6 92 C3 B8 76 C6 | ...t7....t....v.
0x0060: 92 C3 B8 76 28 C3 BF 75 50 C3 BF 75 C3 BF 75 C3 | ...v(..uP..u..u.
0x0070: A8 28 C3 A7 C3 BF C3 BF C3 A9 E2 84 A2 6A C3 BF | .(...........j..
0x0080: 75 C3 BF C3 B0 42 41 66 3D C3 BF 74 0A C2 B7 C3 | u....BAf=..t....
0x0090: 80 50 C3 BF 20 43 41 33 C3 80 C3 A9 77 E2 80 B9 | .P.. CA3....w...
0x00A0: 45 53 56 33 C3 9B E2 80 B9 57 E2 80 B0 45 C3 A4 | ESV3.....W...E..
0x00B0: E2 80 B0 5D E2 80 B9 E2 80 B9 50 66 E2 80 B9 40 | ...]......Pf...@
0x00C0: E2 80 B0 4D C3 98 C2 B7 C3 B0 E2 80 B0 45 C3 AC | ...M.........E..
0x00D0: E2 80 B9 C3 86 C6 92 C3 A0 E2 80 B0 55 C3 A8 2B | ............U..+
0x00E0: C3 83 C3 87 45 C3 BC C3 BF E2 80 9E 36 6A 48 59 | ....E.......6jHY
0x00F0: E2 80 9E 2B C3 81 E2 80 9E C3 8B 48 E2 80 9E C5 | ...+.......H....
0x0100: BE 2B C3 81 74 50 48 74 35 48 E2 80 A6 25 C2 A1 | .+..tPHt5H...%..
0x0110: C3 80 43 E2 80 B0 4D C2 8D CB 86 63 C2 81 E2 80 | ..C...M....c....
0x0120: B0 4D C2 BC E2 80 B0 45 C3 80 66 C3 -- -- -- -- | .M.....E..f.
Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox