我的CFBitVector
看起来像'100000000000000'
我将字节数组传递给CFBitVectorGetBits
,然后包含此CFBitVector
的值。在此次通话后,bytes[2]
看起来像:
bytes[0] == '0x80'
bytes[1] == '0x00'
这正是我所期待的。但是,在将bytes[2]
的内容复制到unsigned int bytesValue,
时,值应为128
,而应为32768
。十进制值128
由十六进制值0x0080
表示。从本质上讲,执行memcpy
时字节顺序似乎相反。这里发生了什么?这只是字节序的问题吗?
由于
CFMutableBitVectorRef bitVector = CFBitVectorCreateMutable(kCFAllocatorDefault, 16);
CFBitVectorSetCount(bitVector, 16);
CFBitVectorSetBitAtIndex(bitVector, 0, 1);
CFRange range = CFRangeMake(0, 16);
Byte bytes[2] = {0,0};
unsigned int bytesValue = 0;
CFBitVectorGetBits(bitVector, range, bytes);
memcpy(&bytesValue, bytes, sizeof(bytes));
return bytesValue;
答案 0 :(得分:5)
这里发生了什么?这只是字节序的问题吗?
是
您的计算机是小端。 16位值32768
将在内存中表示为:
00 80
在一台小端机器上。你有:
80 00
相反,你看到的代表128.