uint8_t (uint_16 または 32 にも変更される可能性があります) を文字列にフォーマットして保存したいと思います。それらを16進数としてフォーマットする必要があり、フォーマットとともに保存したいと考えています。私はこのようなものを持っています(コアのみ):
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++ コンパイラを使用しています。電報はそれほど重要ではありません(はい、適切なサイズです。ここで注意しなかっただけです-「コアコード」)。最後に 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);