2011-09-20 1 views
0

Si ont un tableau de ce charbon tiré d'un objet NSData avec getBytes: Gamme:Essayer de tester si un bit est une valeur char

Je veux tester si un peu particulier est réglé. Je suppose que je le ferais avec un AND bits, mais cela ne semble pas fonctionner pour moi.

je suit:

unsigned char firstBytes[3]; 
[data getBytes:&firstBytes range:range]; 

int bitIsSet = firstBytes[0] & 00100000; 

if (bitIsSet) { 
    // Do Something 
} 

La valeur de firstBytes [0] est 48 (ou '0' comme un caractère ASCII). Cependant bitIsSet semble toujours être 0. J'imagine que je suis juste en train de faire quelque chose de bête ici, je suis nouveau à travailler sur un peu niveau donc peut-être ma logique est erronée.

Répondre

2

Si vous mettez un 0 devant un nombre, vous dites qu'il est exprimé en octal.
00100000 signifie en réalité 32768 en représentation décimale, 10000000 00000000 en représentation binaire.

Essayez

int bitIsSet = firstBytes[0] & 32; 

ou

int bitIsSet = firstBytes[0] & 0x20; 
+0

Merci pour cela. Je savais que ce serait quelque chose de simple. Ça a marché! – Littlejon

Questions connexes