如果使用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.我想我只是在做一些愚蠢的事情,我是一个新的工作,所以也许我的逻辑错了。
答案 0 :(得分:2)
如果你在一个数字前加上一个0
,你说它以八进制表示形式表示
00100000
实际上在十进制表示中表示32768
,在二进制表示中表示10000000 00000000
。
尝试
int bitIsSet = firstBytes[0] & 32;
或
int bitIsSet = firstBytes[0] & 0x20;