Comment convertir un DEC en char

Bonjour,

Je recupère une variable qui semble etre tout en DEC

Si je print ceci

Serial.println((char *)ma_var);

Il m'affiche un résultat convainquant.

Ceci étant dit, je dois parcourir un par un ma variable ma_var.

 for(byte co=0; co < strlen((char *)comm_buf);co++)
    {
      
      Serial.println(ma_var[co])
    }

La, il m'affiche plein de valeur DEC. J'ai regardé le tableau ASCII et ca correspond bien à ce que j'attends.
Donc jusqu'à la ca me va.

Par contre, si je remplace

 Serial.println(ma_var[co])

par
Serial.println((char *)ma_var[co])
là, il m'affiche n'importe quoi.

Donc j'ai essayé

char * l;
        l = (char *)comm_buf[co];
        Serial.println(l);

Idem!!!

Comment je veux donc convertir ceci

comm_buf[co];

en char, ou le mettre dans une variable de type char?

Bonjour,

Tu ne donnes pas pas le type de comm_buf, mais si on suppose que c'est une table d'octets, il suffit de convertir les octets en char

char car=(char)comm_buf[co];

Au fait c'est quoi un DEC ??

Salut Kamil,

Ecuse moi. DEC=décimal

Alors j'ai essayé plusieur truc

char caracter = (char *)comm_buf[co];
        Serial.println(caracter);

Là, j'ai un message d'erreur

error: invalid conversion from 'char*' to 'char' [-fpermissive]
char caracter = (char *)comm_buf[co];
Ca affiche toujours les valeur décimal, du genr

J'ai aussi essayé

char caracter[2];   //declaring character array
        sprintf(caracter,"%d",comm_buf[co]);
Serial.println(caracter);

là, ca m'affiche toujours les valeur décimal.

Si j'ai 49, je dois avoir le caractere 1
Si j'ai 65, je dois avoir le caracter A
etc

Alors il semble que comme ceci, ca fonvtionne

char caracter[2];   //declaring character array
        sprintf(caracter,"%c",comm_buf[co]);
        Serial.println(caracter);

mais pas encore trop sûre

J'arrive toujours pas résoudre mon problème et ca me casse le pied.

initialement, dans comm_buff, j'ai que je souhaite traiter, mais tout est en décimal et j'aimerais avoir des caracteres, à la place.

Si je fais ca

for(byte co=0; co < strlen((char *)comm_buf);co++)
    {
char caracter[2];   //declaring character array
        sprintf(caracter,"%c",comm_buf[co]);
        Serial.println(caracter);
}

Ca affiche bien, mes carcateres, comme je le souhaite.

Mais si maintenant j'essaye de remplace la valeur décimal par son caracteres, comme ceci

for(byte co=0; co < strlen((char *)comm_buf);co++)
    {
     char caracter[2];   //declaring character array
        sprintf(caracter,"%c",comm_buf[co]);
        Serial.print(F("c1:"));
        Serial.println(caracter);

        comm_buf[co] = caracter[0];
        Serial.print(F("c2:"));
        Serial.println(comm_buf[co]);

}

Ca m'affiche ceci:
c1 = c'est juste
c2 = c'est denouveau la valeur décimal

c1:1
c2:49
c1:,
c2:44
c1:"
c2:34
c1:+
c2:43
c1:4
c2:52
c1:1
c2:49
c1:7
c2:55
c1:6
c2:54
c1:3
c2:51
c1:4
c2:52
c1:3
c2:51
c1:5
c2:53
c1:2
c2:50
c1:0
c2:48
c1:6
c2:54
c1:"
c2:34
c1:,

Je dois très mal mis prendre!!!! mais j'aimerais travailler avec des caracteres, mais pas avec des décimals!!!!

Je ne comprends pas tes essais.
Tu n'as toujours pas dit de quel type est comm_buf. Si c'est une suite d'octets terminée par 0, il suffit de la convertir en char *

Serial.println((char *) comm_buf)

oui si tu fait

comm_buf[co] = caracter[0];

comm_buf[] c'est un tableau type int apparemment et tu lui écrit avec un type char donc tu récupère le code ascii