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

Messages postés
13
Date d'inscription
mardi 27 mai 2003
Dernière intervention
7 septembre 2005
- - 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
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
22 août 2010
16
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
}
}

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de vecchio56
Messages postés
241
Date d'inscription
vendredi 23 mai 2003
Dernière intervention
8 octobre 2007
1
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

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci 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.