私はこれら2つの変数uint8_t* data_chars
とunsigned int length
を持っています。uint8_t * data_charsと長さを同等の文字列に変換する
data_chars
は、文字配列へのポインタです。 length
は文字数です。
私はArduinoで使用されるStringオブジェクトに変換したいと思います。まあ
私はこれら2つの変数uint8_t* data_chars
とunsigned int length
を持っています。uint8_t * data_charsと長さを同等の文字列に変換する
data_chars
は、文字配列へのポインタです。 length
は文字数です。
私はArduinoで使用されるStringオブジェクトに変換したいと思います。まあ
、バッファとそのサイズにはコンストラクタがないので、あなたはそれを自分で行う必要があります:
String data;
data.reserve(length+1); // prepare space for the buffer and extra termination character '\0'
for (int i = 0; i<length; ++i) {
data += (char)data_chars[i]; // typecast because String takes uint8_t as something else than char
}
それはちょっとメモリを無駄にしていますが。
ところでchar * data_chars
を使用しても、タイプキャストなしでも機能します。
KIIVによる回答はほぼ正しいです。しかし、100%の正解は以下のようになるはずです。
String data;
data.reserve(length+1); // prepare space for the buffer and extra termination character '\0'
for (int i = 0; i<length; ++i) {
data += (char) data_chars[i];
}
完全に確実になるには、data_chars[]
をcharにキャストする必要があります。 KIIVの答えからの小さな変更。クレジットはまだKIIVに行く。
理論的には、私の答えを編集することができます。あるタイプキャストでのみ異なる別の答えを追加する必要はありません。 – KIIV
KIIV、あなたは正しいので、私がやったことを元に戻すことはできません。あなたの答えに正しいものを記入するようOPに要請します。申し訳ありません。 – user781486
wk_sg、Ok。あなたが気にしないならば、私はただそれをします。 KIIVはもっとそれに値する。 – user781486
申し訳ありませんが、私は答えを切り替えました。 wk_sgが提供する答えは、いくつかのテストの後で正しいものです。 – user781486