通过snprintf将数据类型转换为uint8_t / uint16_t到char []

时间:2015-07-20 16:42:08

标签: c char printf type-conversion uint8t

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的原因。

有人可以解释转换吗?

1 个答案:

答案 0 :(得分:3)

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