Je fais une fonction pour convertir un entier en un caractère hexadécimal * dans Arduino, mais je suis tombé sur le problème de ne pas pouvoir convertir une chaîne en un caractère *. Peut-être que s'il y a un moyen d'allouer dynamiquement de la mémoire pour char *, je n'ai pas besoin d'une classe String.Comment convertir une chaîne en un caractère * dans Arduino?
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;
}
La fonction toCharArray() ne convertit pas la chaîne à un tableau de caractères. Serial.print (c) renvoie l'impression vide. Je ne sais pas ce que je peux faire.
my_string.c_str() fonctionne pas dans Arduino IDE –
Astuce: Quel est le valeur de 'y, z' la première fois' int y; int z; while (x> 16 || y * 16 == z) 'est-il exécuté? – chux
my_string.data() ou & my_string [0] qui obtiendra le pointeur vers le tableau de caractères interne. –