Changer le type d'une variable

Résolu
dayvid75014 Messages postés 96 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 25 avril 2008 - 14 mars 2008 à 11:33
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 - 15 mars 2008 à 11:03
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

dayvid75014 Messages postés 96 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 25 avril 2008
14 mars 2008 à 11:35
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 !!
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
14 mars 2008 à 11:54
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
0
dayvid75014 Messages postés 96 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 25 avril 2008
14 mars 2008 à 14:37
Comme d'habitude Jean-françcois, tu me permettras l'expression, tu déchires !

Merci !!

Bonne journée JF    
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
15 mars 2008 à 11:03
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
0
Rejoignez-nous