Manipulation de bits et d'octets [Résolu]

K0rr1gan 13 Messages postés mardi 27 mai 2003Date d'inscription 7 septembre 2005 Dernière intervention - 7 juin 2005 à 15:59 - Dernière réponse : cs_eRoZion 241 Messages postés vendredi 23 mai 2003Date d'inscription 8 octobre 2007 Dernière intervention
- 8 juin 2005 à 01:59
Bonjour,





je cherche à récupérer 1 à 1 les différents bits d'un octet pour les classer dans un tableaux de bool à l'aide d'une boucle,


pour sa g essayé de décaler les bits à droite de 7-n avec n allant de 0 à 7:





for(int x=0; x<datasize; x++)


{


currentB=bytes[x];


iter=0;





for(int i=0; i<nb_bits; i++)


{


iter++;


bits[x*nb_bits+i] = (currentB>>(7-iter)) & 1;


count++;


}


}





avec currentB et bytes* de type Byte et bits* de type bool.





Eske kk1 pourrait me dire ou se trouve mon erreur ou m'indiquer une
façon de procéder pour recuperer les bits? (c relativement urgent :/)
Afficher la suite 

2 réponses

Répondre au sujet
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 7 juin 2005 à 16:08
+1
Utile
Comment je ferais:

int n = 0;
for(int x=0; x<datasize; x++)
{
currentB=bytes[x];

for(int i=0; i<nb_bits; i++)
{
bits[n++] = currentB & 0x80; // prend le bit de poids fort
currentB <<= 1; // déclale de 1 à gauche
}
}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de vecchio56
cs_eRoZion 241 Messages postés vendredi 23 mai 2003Date d'inscription 8 octobre 2007 Dernière intervention - 8 juin 2005 à 01:59
+1
Utile
Salut ;)



Je suis pas d'accord...





Pour utiliser la même methode que vecchio (mais il y en a d'autres) :



// bits de taille nb_nits

for(i=0; i<nb_bits; i++)

{


bits[nb_bits-i-1] = currentB & 0x01; // prend le bit de poids faible


currentB >>= 1; // décale de 1 à droite

}



Et pour l'avoir en chaine de caractères (pour l'afficher direct avec %s) :



// bits de taille nb_nits+1


for(i=0; i<nb_bits; i++)


{


bits[nb_bits-i-1] = (currentB & 0x01) + 0x30; // prend le bit de
poids faible


currentB >>= 1; // décale de 1 à droite


}


bits[nb_bits]=0;



Je m'étonne même que tu vous ayez réussi à la faire fonctionner ?! :)




eRoZion
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_eRoZion

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.