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);

输出:1653
我使用http://www.asciitohex.com/来查看转换,但无法获得它输出1653的原因。
有人能解释一下这些转换吗?

最佳答案

0xA5输出165。0x21输出33。0xABCD输出43981。这将产生1653343981。但是输出字符串的大小被限制为5(包括nul终止符),因此得到1653

08-16 01:28