gpt4 book ai didi

objective-c - 使用 CFBitVectorGetBits 时 CFRange 不能跨字节

转载 作者:搜寻专家 更新时间:2023-10-30 19:49:19 25 4
gpt4 key购买 nike

Byte a[2]={85, 15};
Byte b[2]={0};
CFBitVectorRef bv1 = CFBitVectorCreate(kCFAllocatorDefault, a, 16);
CFRange r1 = {3, 8};
CFBitVectorGetBits(bv1, r1, b);

Byte a[2]是“0101 0101 0000 1111”,我想把CFRange的{3,8}(1010 1000)截成另一个Byte b[2]。但是我在 b[2] 中什么也没有得到。但是,如果我将范围更改为 {0,8} 或 {8,8},它就会起作用。为什么取不到跨字节的位?

最佳答案

看来我也遇到了同样的问题。当我使用 {7,7} 范围时,CFBitVectorGetBits 将我的 *bytes 设置为 nil。找到任何解决方案?我现在通过愚蠢地迭代位来实现它。
编辑:
添加代码:

CFBitVectorRef source = ... ;// Some source bit vector
CFIndex location = 7;//Current location in bit vector
uint8 *bytes = malloc(sizeof(uint8));
//CFBitVectorGetBits(source, CFRangeMake(location,7), bytes);//This one is bugged
CFBitVectorRef buffer = CFBitVectorCreateMutable(NULL,7);
CFBitVectorSetCount(buffer, 7);
for (CFIndex i=0; i<7; i++)
CFBitVectorSetBitAtIndex(buffer, i, CFBitVectorGetBitAtIndex(source, location+i));
CFBitVectorGetBits(buffer, CFRangeMake(0, 7), bytes);
//Now *bytes contains needed bits

根据需要工作。

关于objective-c - 使用 CFBitVectorGetBits 时 CFRange 不能跨字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15628026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com