0
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。

谁能解释一下转换?

4

1 回答 1

3

0xA5输出 165。0x21输出 33。0xABCD输出 43981。这给出了1653343981. 但是您的输出字符串大小仅限于5(包括nul终止符),因此您得到1653.

于 2015-07-20T16:47:06.230 回答