char data[40] = {'\0'};
uint8_t Plevel= 0xA5;
uint8_t status = 0x21;
uint16_t ID = 0xABCD;
snprintf(data, 5, "%"PRIu8"%"PRIu8"%"PRIu16"",Plevel, status, ID );
printf("data:%s\n",data);
outputs: 1653
I use http://www.asciitohex.com/ to see the conversion but couldn't get why it outputs 1653.
Could anyone please explain the conversions?
0xA5
outputs 165. 0x21
outputs 33. 0xABCD
outputs 43981. This gives 1653343981
. But your output string size is restricted to 5
(including the nul
terminator) and so you get 1653
.