私はArduinoで整数を16進数のchar *に変換する関数を実行していますが、文字列をchar *に変換できないという問題に直面しました。多分、char *のために動的にメモリを割り当てる方法があれば、私はクラスStringを必要としません。Arduinoで文字列をchar *に変換するには?
char *ToCharHEX(int x)
{
String s;
int y = 0;
int z = 1;
do
{
if (x > 16)
{
y = (x - (x % 16))/16;
z = (x - (x % 16));
x = x - (x - (x % 16));
}
else
{
y = x;
}
switch (y)
{
case 0:
s += "0";
continue;
case 1:
s += "1";
continue;
case 2:
s += "2";
continue;
case 3:
s += "3";
continue;
case 4:
s += "4";
continue;
case 5:
s += "5";
continue;
case 6:
s += "6";
continue;
case 7:
s += "7";
continue;
case 8:
s += "8";
continue;
case 9:
s += "9";
continue;
case 10:
s += "A";
continue;
case 11:
s += "B";
continue;
case 12:
s += "C";
continue;
case 13:
s += "D";
continue;
case 14:
s += "E";
continue;
case 15:
s += "F";
continue;
}
}while (x > 16 || y * 16 == z);
char *c;
s.toCharArray(c, s.length());
Serial.print(c);
return c;
}
toCharArray()関数は文字列をchar配列に変換していません。 Serial.print(c)は空の印刷を返します。私は何ができるのか分からない。更新
my_string.c_str()ArduinoのIDEで –
ヒント機能しないよう
String
を受け入れる:何ですが'y、z'の最初の値' int y; int z; while(x> 16 || y * 16 == z) 'が実行されるのは、 ですか? – chuxmy_string.data()または&my_string [0]これは、内部char配列へのポインタを取得します。 –