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

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

2 réponses

Meilleure réponse
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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 195 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
Statut
Membre
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 195 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_eRoZion