3

我正在尝试在 iOS 应用程序中实现一种算法,该算法将使用大位掩码。每个位掩码的长度最多可达 256 位(32 字节)。我需要在掩码内的任意位置快速获取/设置位等。

是否有任何 C 或 Objective-C 的内置语言特性使这种事情变得容易,或者我应该期望编写自己的函数来操作任意字符数组中的位?自己做这件事似乎不太难,但如果已经有一些东西可以有效和干净地做到这一点,我宁愿不自己写。

4

4 回答 4

3

看一下CFMutableBitVector,它旨在处理此类问题。

于 2011-09-13T02:29:34.557 回答
0

LibTomMath库对任意大小的整数具有必要的逻辑运算

Apple 的 iOS Accelerate Framework大概提供了对 256 位整数(以及高达 1024 位的其他大小)的逻辑操作,但文档很粗略。

于 2011-09-13T02:42:37.773 回答
0

您可能会查看 C++ STL 中的 std::bitset 。

于 2011-09-13T02:27:39.350 回答
0

嗯,32 字节并不是特别大。

您可以通过创建一个包含 8 个掩码字节的数组来获取/设置位,使用位 # 的低 3 位索引该数组,并使用位 # 的剩余 5 位来寻址保存这些位的字节数组。

我不记得在标准 C 库中有和/或/xor 字节字符串操作,但它并不难编写,例如,一个函数 to do andbytes(target, source, count),以便在您的位集之间进行操作。

您需要做的主要事情是弄清楚如何控制位阵列的存储。如果它们固定在 256 位,那么使用包含这些位的 char[8] 数组来制作它们是最有意义的 Objective-C 对象。

于 2011-09-13T02:28:05.160 回答