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

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

Votre réponse

2 réponses

Meilleure réponse
vecchio56
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
22 août 2010
- 7 juin 2005 à 16:08
1
Merci
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
}
}

Merci vecchio56 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de vecchio56
Meilleure réponse
cs_eRoZion
Messages postés
241
Date d'inscription
vendredi 23 mai 2003
Dernière intervention
8 octobre 2007
- 8 juin 2005 à 01:59
1
Merci
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

Merci cs_eRoZion 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

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.