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

Signaler
Messages postés
13
Date d'inscription
mardi 27 mai 2003
Statut
Membre
Dernière intervention
7 septembre 2005
-
cs_eRoZion
Messages postés
241
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
8 octobre 2007
-
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 :/)

2 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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
}
}
Messages postés
241
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
8 octobre 2007
1
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