我想将 uint8_t (也可以更改为 uint_16 或 32 )及其格式存储在字符串中。我需要将它们格式化为十六进制,并希望将它们与它们的格式一起存储。我有这样的东西(只是核心):
uint8_t telegramData[];
for (int i = 0; i < sizeof(telegram); i++)
{
printf("Uint8_t: %02X", telegramData[i]);
}
示例输出:Uint8_t: C8 4A 00 0D
应该存储而不是打印出来,但格式正确。最好是如果我有结果作为示例: string str = "C8 4A 00 0D" 有什么方法吗?真的提前谢谢!
已编辑
你好,好像我发现了。我正在使用 C++,对不起,我认为标记错误。我正在使用 g++ 编译器。Telegram 没有那么重要(是的,它有适当的大小,只是在此之前没有注意-“核心代码”)。最后使用了 sprintf ,这对我来说似乎是一个解决方案(再次只是核心,因为解释每个细节需要太多时间):请不要咬我的头,我不擅长编码。
uint8_t telegram;
char *tmp = (char*)malloc(sizeof(telegram));
for (int i = 0; i < sizeof(telegram); i++)
{
sprintf (tmp + strlen(tmp), " %02X", telegram[i]);
}
printf ("Uint8_t: %s",tmp);
输出结果: Uint8_t: C8 4A 00 0D 我知道这不是最好的解决方案,但最接近我需要的。现在它也存储在 tmp 中,所以以后也可以使用,而不仅仅是打印一次。这就是为什么需要。
已编辑
一些更好的版本:
uint8_t telegram;
char *tmp = (char*)malloc(sizeof(telegram));
int test = 0;
for (int i = 0; i < sizeof(telegram); i++)
{
test += sprintf (tmp + test, " %02X", telegram[i]);
}
printf ("Uint8_t: %s",tmp);