通过 snprintf 将数据类型转换 uint8_t/uint16_t 为 char[]
Data type conversion uint8_t/uint16_t to char[] via snprintf
char data[40] = {'[=11=]'};
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
.
char data[40] = {'[=11=]'};
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
.