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

dayvid75014 96 Messages postés mercredi 5 mars 2008Date d'inscription 25 avril 2008 Dernière intervention - 14 mars 2008 à 11:33 - Dernière réponse : cs_jfrancois 482 Messages postés vendredi 26 août 2005Date d'inscription 5 décembre 2009 Dernière intervention
- 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) 
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
dayvid75014 96 Messages postés mercredi 5 mars 2008Date d'inscription 25 avril 2008 Dernière intervention - 14 mars 2008 à 11:35
3
Merci
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 !!

Merci dayvid75014 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de dayvid75014
cs_jfrancois 482 Messages postés vendredi 26 août 2005Date d'inscription 5 décembre 2009 Dernière intervention - 14 mars 2008 à 11:54
0
Merci
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
Commenter la réponse de cs_jfrancois
dayvid75014 96 Messages postés mercredi 5 mars 2008Date d'inscription 25 avril 2008 Dernière intervention - 14 mars 2008 à 14:37
0
Merci
Comme d'habitude Jean-françcois, tu me permettras l'expression, tu déchires !

Merci !!

Bonne journée JF    
Commenter la réponse de dayvid75014
cs_jfrancois 482 Messages postés vendredi 26 août 2005Date d'inscription 5 décembre 2009 Dernière intervention - 15 mars 2008 à 11:03
0
Merci
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
Commenter la réponse de cs_jfrancois

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.