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

标签 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。

谁能解释一下转换?

最佳答案

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

关于c - 通过snprintf将uint8_t/uint16_t数据类型转换为char[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31521877/

相关文章:

c - 在 C 中使用动态分配将文件读入多维数组

c - 将函数指针分配给变量

c - 为什么生成的解析器会出现语法错误?

powershell - 在PowerShell中检查每行的第一个字符以获取特定值

java - 检查字母是否大写的更快方法(性能)?

c - 在C中如何将局部函数变量值传递给另一个函数并无错误地打印值

c++ - 打印浮点值时出现问题

c - c中的字符串文字

C编程-角色 move 问题

c - 为什么 printf() 在打印多个字符串 (%s) 时会留下换行符以及如何解决这个问题?