вот придумал, как сделать ф-цию, обрабатывающую параметры разных размеров, понимаю, что наверно не первый такой умный, но вот захотелось поделиться, показана простая функция, но можно использовать и в более сложных ситуациях
#define PR_HEX_WRAP(a, b) print_hex(a, sizeof(typeof(*a)), b)
void print_hex(void *a, size_t memb_s, size_t s) {
	size_t i;
	s = s * memb_s;
	printf("0X");
	for (i = 0; i < s; i++) {
		if ((i % memb_s == 0) && (i > 0)) 
			printf(" 0X");
		printf("%X", *((uint8_t *)a + i));
	}
	printf("\n");
}
можно передавать любой массив в ф-цию PR_HEX_WRAP и макрос автоматически передает нужный размер





