Хотел распечатать uint32 hex.
Пробовал "PRIx32", мне плохо выглядело:
967407c0 23 4481d55f ffffff52 de3cd140
2fc aa7363cf fffff40d 563270c0 2b86
Итак ... попробовал это. Грязно, но сработало:
/*******************************************************************************
Print a digit in hex.
*******************************************************************************/
void mpal_digit_t_print_hex(
mpal_digit_t * input)
{
uint8_t p_1, p_2, p_3, p_4, p_5, p_6, p_7, p_8;
p_1 = (uint8_t)(((*input) << 0) >> 28);
p_2 = (uint8_t)(((*input) << 4) >> 28);
p_3 = (uint8_t)(((*input) << 8) >> 28);
p_4 = (uint8_t)(((*input) << 12) >> 28);
p_5 = (uint8_t)(((*input) << 16) >> 28);
p_6 = (uint8_t)(((*input) << 20) >> 28);
p_7 = (uint8_t)(((*input) << 24) >> 28);
p_8 = (uint8_t)(((*input) << 28) >> 28);
printf(" %" PRIx8 "%" PRIx8 "%" PRIx8 "%" PRIx8 "%" PRIx8 "%" PRIx8 "%"
PRIx8 "%" PRIx8 "", p_1, p_2, p_3, p_4, p_5, p_6, p_7, p_8);
return;
}
Выход:
61dd90ef ff6df47e a0a9abc0 011d7394 2311761f
f4402427 5c44ca40 0f86aba7 6aa5194f ecb9ed1e
Есть ли элегантный способ сделать это в c?