hex editor에서 보는 것처럼 데이터를 hex로 dump해주는 코드이다.


void hexdump(const uint8_t *buf, const uint32_t len) {
	const uint32_t size = 16;

	for (uint32_t i = 0; i < len; i += size) {
		printf("[0x%04x] ", i);
		for (size_t j = i; j < i + size; ++j) {
			if (j == i + size/2) putchar(' ');
			if (j>=len)
				printf("   ");
			else
				printf("%02x ", buf[j]);
		}
		putchar(' ');
		for (uint32_t j = i; j < i + size && j < len; ++j) {
			if (j == i + size / 2) putchar(' ');
			if (buf[j] >= 0x20 && buf[j] < 0x80)
				putchar(buf[j]);
			else
				putchar('.');
		}
		putchar('\n');
	}
	putchar('\n');
}


/usr/include같은 디렉토리에 hexdump.h에 저장해두면 #include<hexdump.h> 후 간편히 사용할 수 있다.

+ Recent posts