Si ma chaine data fait 18 caractères (2+16) : $A (entête) + 16 bits
Comment dois je la déclarer
Il suffit de déclarer un tableau de 19 caractères.
puis lui ajouter 0 à la fin ?
Comment se passe le remplissage du buffer ? Si la fonction ne rajoute pas le '\0' final, il est préférable de la modifier pour qu'elle le rajoute.
S'il n'y a pas moyen de modifier, tu peux, au pire, forcer l'écriture du '\0' final après l'appel de la fonction :
data[18]='\0'; /* indice 18 = 19ème caractère */
ensuite, il faut que je retire l'entête puis stocker le résultat de la conversion dans un autre buffer ( data2 si l'entete commence par $A et data3 si l'entete commence par $B )
Une fois que ton buffer est rempli, je pense que tu n'es pas obligé de recopier la chaîne dans une autre, vu que tu utilises un format fixe (2 caractères d'en-tête + 16 caractères '0' ou '1'). Il suffit, lors de l'appel de la fonction de conversion de la chaîne binaire vers un entier, de faire passer en argument l'adresse du buffer (data) en ajoutant deux, comme dans l'exemple un peu plus haut :
1 2 3 4 5
| if (data[0]=='$')
{
if (data[1]=='A') data2=BinaireVersDecimal(&data[2]);
if (data[1]=='B') data3=BinaireVersDecimal(&data[2]);
} |
Partager