Попытка проверить, установлен ли бит в значении символа - PullRequest
0 голосов
/ 20 сентября 2011

Если есть массив символов, извлеченных из объекта NSData с помощью getBytes: range:

Я хочу проверить, установлен ли определенный бит. Я бы предположил, что я сделаю это с побитовым И, но это, кажется, не работает для меня.

У меня есть следующее:

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

int bitIsSet = firstBytes[0] & 00100000;

if (bitIsSet) {
  // Do Something
}

Значение firstBytes [0] равно 48 (или «0» как символ ASCII). Тем не менее, bitIsSet всегда кажется равным 0. Я думаю, я просто делаю что-то глупое, я новичок в работе на уровне битов, поэтому, возможно, моя логика неверна.

1 Ответ

2 голосов
/ 20 сентября 2011

Если вы поставите 0 перед числом, которое вы говорите, оно выражено в восьмеричном представлении.
00100000 фактически означает 32768 в десятичном представлении, 10000000 00000000 в двоичном представлении.

Попробуйте

int bitIsSet = firstBytes[0] & 32;

или

int bitIsSet = firstBytes[0] & 0x20;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...