Changer le type d'une variable [Résolu]

Signaler
Messages postés
96
Date d'inscription
mercredi 5 mars 2008
Statut
Membre
Dernière intervention
25 avril 2008
-
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009
-
Bonjour à tous,

J'aimerais rechercher des octets dans un tableau : 0x47.
MAIS, lorsque je définis "int valeur=47" et que je fais dans ma boucle Buffer[i]==valeur, il me retourne les valeurs dans le tableau correspondant à 0x2F et non 0x47. Normal vous me direz, vu que 47 en décimal donne 2F en héxa.

Quelqu'un sait-il si y a un moyen de rechercher mon octet 0x47 en castant ma variable "valeur" de manière à ce que le buffer trouve mes bons octets? ( quand je fais int valeur=47 ça ne marche pas du tout car mon buffer stocke des unsigned char venant d'un flux MPEG) 

4 réponses

Messages postés
96
Date d'inscription
mercredi 5 mars 2008
Statut
Membre
Dernière intervention
25 avril 2008

en faisant ...:

char valeur=71;
 for(i=0;i<1000;i++)
 {
 if((unsigned char)Buffer[i]==valeur)
 {
  synchro_bytes[i]=(unsigned char)Buffer[i];
  printf("0x%x\n",synchro_bytes[i]);
 }
 }

Bonne journée à tous !!
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009

Tout ça est équivalent :

char valeur = 71;   // valeur décimale (surtout pas de zéro en 1ère position)
char valeur = 0x47; // valeur hexadécimale (0x devant le code hexa 00 à FF)
char valeur = 0107; // valeur octale (zéro en 1ère position)

Jean-François
Messages postés
96
Date d'inscription
mercredi 5 mars 2008
Statut
Membre
Dernière intervention
25 avril 2008

Comme d'habitude Jean-françcois, tu me permettras l'expression, tu déchires !

Merci !!

Bonne journée JF    
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009

Pas de quoi !

et bien sûr j'ai oublié le plus basique pour un caractère :

char valeur = 'G'; // le caractère lui-même !
Pour l'initialisation avec une valeur décimale (char valeur 71;) il faut absolument éviter un zéro en première position sauf entre 0 et 7 bien sûr, puisque pour ces valeurs là il n'y a pas encore de différence entre les bases décimale et octale. Et zéro seul est valable pour toutes les bases y compris sous des formes détournées telles que char valeur '\0'; ou char valeur = NULL; (à éviter toutefois, NULL est à utiliser avec les pointeurs).

Et tout ceci est n'est pas seulement valable avec l'initialisation de la variable :
- Test : if (valeur == 0x47) {...}
- Indice :  tableau_valeur[71] ou tableau_valeur['G']
- ...
Jean-François