Caractère intercalé...

Résolu
dayvid75014 Messages postés 96 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 25 avril 2008 - 12 mars 2008 à 12:09
dayvid75014 Messages postés 96 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 25 avril 2008 - 13 mars 2008 à 09:52
Bonjour à tous,

J'affiche des octets d'un flux vidéo à l'écran avec un printf("%x \n", buffer[i]); mais je ne comprends pas pourquoi certains caractères "f" viennent se greffer à coté de mes valeurs hexadécimales..

Regardez ce que j'obtiens:

0xffffff9d
0xffffffeb
0xf
0xffffffe3
0x4
0xffffffc8
0xffffff9c
...
etc
...

Vous l'aurez compris, je ne vois pas pourquoi ces "f" s'incrustent .... grrrrrr...
Quelqu'un aurait-il une idée ?

Bonne journée à tous !

7 réponses

cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
12 mars 2008 à 13:34
Au delà de 7F (ou à partir de F0, c'est à dire quand le bit de poids fort passe à 1) le char est considéré comme négatif et ca donne cette valeur sur 8 chiffres hexadécimaux complété avec des F.

void main()
{
   char code_du_flux = 0xF0;
   printf("%02X",code_du_flux); --> FFFFFFF0
}

Il faut passer en caractères non signés soit en 'castant' soit à la déclaration :

void main()
{
   char code_du_flux = 0xF0;
   printf("%02X",(unsigned char)code_du_flux); --> F0
}

ou

void main()
{
   unsigned char code_du_flux = 0xF0;
   printf("%02X",code_du_flux); --> F0
}

Jean-François
3
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
12 mars 2008 à 13:34
Au delà de 7F (ou à partir de F0, c'est à dire quand le bit de poids fort passe à 1) le char est considéré comme négatif et ca donne cette valeur sur 8 chiffres hexadécimaux complété avec des F.

void main()
{
   char code_du_flux = 0xF0;
   printf("%02X",code_du_flux); --> FFFFFFF0
}

Il faut passer en caractères non signés soit en 'castant' soit à la déclaration :

void main()
{
   char code_du_flux = 0xF0;
   printf("%02X",(unsigned char)code_du_flux); --> F0
}

ou

void main()
{
   unsigned char code_du_flux = 0xF0;
   printf("%02X",code_du_flux); --> F0
}

Jean-François
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
12 mars 2008 à 13:40
J'ai dû avoir le hoquet sur la touche Ajouter 

Jean-François
0
dayvid75014 Messages postés 96 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 25 avril 2008
12 mars 2008 à 14:25
JFrancois je te remercie encore et encore (et toujours). Tes réponses sont claires et concises et vont droit au but. je suis ravi. merci encore! ;-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dayvid75014 Messages postés 96 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 25 avril 2008
12 mars 2008 à 14:27
et ça arrive d'avoir le hoquet, même sur le clavier !

Have a nice afternoon !
Bye
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
12 mars 2008 à 21:15
Petite correction !!!
   Au delà de 7F (ou à partir de F0, c'est à dire quand le bit de poids fort passe à 1) ...
je voulais dire :
   Au delà de 7F (ou à partir de 80, c'est à dire quand le bit de poids fort passe à 1) ...

Jean-François
0
dayvid75014 Messages postés 96 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 25 avril 2008
13 mars 2008 à 09:52
oui j'avais vu cette petite erreur mais tu m'avais suffisamment guidé pour que je puisse la corriger tout seul. Merci quand même pour ta précision !
0
Rejoignez-nous