尝试测试是否在char值中设置了一个位

时间:2011-09-20 10:38:29

标签: objective-c bit-manipulation

如果使用getBytes从一个NSData对象中取出一个char数组:range:

我想测试是否设置了特定位。我会假设我会用一个按位AND来做,但它似乎对我不起作用。

我有以下内容:

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 个答案:

答案 0 :(得分:2)

如果你在一个数字前加上一个0,你说它以八进制表示形式表示 00100000实际上在十进制表示中表示32768,在二进制表示中表示10000000 00000000

尝试

int bitIsSet = firstBytes[0] & 32;

int bitIsSet = firstBytes[0] & 0x20;