Comme indiqué dans le titre je souhaite faire une conversion. Je m'explique:
J'ai un tableau de 10 données:
byte Array[9]
Chaque "colone" contient un numéro de 0 à 9. Donc 10 digits allant de 0 à 9 qui me donnent un numéro de téléphone, par exemple: 0329415376 ou précisément {0, 3, 2, 9, 4, 1, 5, 3, 7, 6}
Avec sa j'ai une variable char
char numero[10]
Elle contient n+1 donnée pour la terminaison "0".
Je veux pouvoir faire Serial.print(numero) et indiquer le numéro complet (les 10 digits). Il faut que chaque digit soit converti dans sa valeur de la charte ASCII correspondante?!
Si je mets simplement la valeur décimal je n'obtiens que des caractères vide.
exemple:
n=0-9
numero[n] = Array[n]
Sa fait des heures que je coince la dessus, j'ai fouillé tout le net à la recherche de la solution mais je n'ai pas trouvé de réponse clair >:(
J'ai besoin du char pour une fonction d'un module externe...
Pouvez vous m'écrire un code qui effectuerais cette tâche? Mille merci!
tu peux convertir ton tableau de chiffres en tableau de caractères comme le dit kamill, en ajoutant 48 (ou '0') qui correspond au code ASCII du chiffre 0. Un truc du genre :
byte Array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
char numero[11];
for(int i=0; i<10; i++) // dans ton code t'avais mis "a>9", ce qui à mon humble avis est une erreur
{
numero[i] = Array[i] + 48; // conversion "directe"
}
numero[10] = '\0'; // ne pas oublier de "terminer" la chaine sinon ca ne va faire que planter
Serial.print(numero); // et t'envoies le numéro dans ton lien série
Sinon, si tu veux faire plus court et qui marche tout aussi bien, tu peux tout aussi bien écrire chiffre par chiffre dans ton lien série :
byte Array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
for(int i=0; i<10; i++) //comme avant
{
Serial.print((int)(Array[i])); // envoi direct : le "cast" (conversion) en int c'est pour s'assurer que print ne prend pas ta valeur pour un caractère/code ASCII.
}
for(a=0;a>9;){
if(Array[a]==0){
numero[a]==valeurASCII_0;
}
etc.
a++;
}
Ca risque pas de marcher
for (a=0; a>9;)
a est initialisé à 0
la condition de validité de la boucle est : a supérieur à 9
donc tu passes jamais dans la boucle
ensuite
numero[a]==valeurASCII_0; est interprété comme un test par le compilateur donc tu n'affectes aucune valeur à numero[a]
La deuxième version est plus courte mais moins performante que la première (de peu), je ne mets pas de '\0' parce que c'est print qui s'en charge (à chaque fois en plus) tout seul comme un grand...