How to print numbers in HEX with printf in C?
static void ReadReg_SI5338(uint8_t *pBuffer)
{
uint8_t ret;
ret = HAL_I2C_Master_Transmit(&hi2c2, SI5338_ADDR, pBuffer, 1, 5);
if ( ret != HAL_OK )
{
printf("Error Tx\r\n");
}
else
{
ret = HAL_I2C_Master_Receive(&hi2c2, SI5338_ADDR, pBuffer, 1, 5);
if ( ret != HAL_OK )
{
printf("Error Rx\r\n");
}
else
{
printf(pBuffer[0], "\r\n");
}
}
}
The code works, it reads correct values, but prints garbage in terminal. I’d like to have it in format "0x38", "0x01", etc. But i don’t know how to do it.
>Solution :
To print numbers in hex in C, use:
printf("%#04x", number);
#
: means include a 0x
before the number
04
: mean padd the number with 2 zeros (aka if the number is 1
, it will print 0x01
instead of 0x1
, 4 cuz 2 for 0x
)
x
: hex specifier