Lire un octet

th62d Messages postés 2 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 6 octobre 2004 - 6 oct. 2004 à 14:29
essirc Messages postés 48 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 26 juillet 2005 - 6 oct. 2004 à 17:13
Bonjour,

Je dois lire la valeur se trouvant dans buffer.

char buffer[10];

printf("%x\r\n",buffer[1]);
La réponse en Hexa : FC.......correct!
printf("%d\r\n",buffer[1]);
La réponse en Décimal : -4 !! au lieu de 252.

Pour une valeur < 128 ça marche
Pour une valeur >= 128 le résultat est négatif.........!!!!.........

Quelqu'un pourrait il m'aider?
Merci d'avance.

Th62d.

2 réponses

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
6 oct. 2004 à 17:09
Salut,
Tu as déclaré un tableau de valeurs signées (char). Pour résoudre ce petit problème tu peux faire:
unsigned char buffer[10];

Moi je préfère le déclarer comme ceci:
BYTE buffer[10];

Bonne programmation!
0
essirc Messages postés 48 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 26 juillet 2005 3
6 oct. 2004 à 17:13
Salut,
ce que tu obtiens est tout à fait normal. En effet, un caractère en C est "signé", c'est à dire qu'il contient une valeur comprise entre -128 et 127, ces valeurs sont codées sur 7 bits et le dernier bit est utilisé pour indiquer le signe.

Pour avoir un résultat non signé, il te suffit de déclarer ton buffer en tant que tableau de caractères non signés :
unsigned char buffer[10];

ou, de modifier le type de la donnée que tu manipules au moment de son affichage :
printf("%d\r\n", (unsigned char) buffer[1]);

Voila, ca devrait marcher :)
0
Rejoignez-nous