2010-09-13 10 views
1

Je dois récupérer le premier bit de 1 octet. Pour cela j'ai stocké 1 octet entier dans Array char non signé. Maintenant, je récupérai premier bit comme ci-dessous le code:comment récupérer 1 bit d'un tableau d'octets (tableau char non signé) dans C

unsigned char byteArray[100]; 
..... 
.....//some code to store 1 byte in byte array 
//now 1st bit will be: 
int bit=(int) byteArray[0]; 

Je voulais juste confirmer que l'étape impliqué dans la récupération du 1er bit est juste ou non? Existe-t-il un meilleur moyen de récupérer un seul bit à partir de char char non signé (tableau d'octets) dans C.

Répondre

1

Non, l'indexeur de tableau va retourner des données de la taille d'un char non signé, pas un seul bit. Utilisez byteArray[0] & 1; - en masquant la valeur de sorte que vous n'obteniez que le premier bit (en fonction de quelle extrémité est la "première"). L'autre extrémité serait & 128.

+0

+1 pour la manipulation d'endianess. – Alam

+0

Si je dois récupérer MSB alors il devrait être byteArray [7] & 128? – james

+1

@all je suis désolé. J'ai une requête endianess stocke un mot à partir de l'adresse inférieure ou l'adresse supérieure. Dans ce cas, comment cela va affecter mon premier bit? – Alam

2

Comment (et pourquoi) stockez-vous un octet dans un tableau d'octets à cette fin? Ce n'est pas nécessaire.

Dans tous les cas, si vous voulez récupérer le premier bit d'un octet, tout ce que vous avez à faire est une opération d'un bit.

unsigned char byte = <some random value>; // your byte containing the value. 
unsigned int first_bit = byte & 1; // for Least significant bit 

L'opération byte & 1 est un bitwise AND operation.

Questions connexes