使用大位掩码的便捷方法

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

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

看看CFMutableBitVector ,它旨在处理这类问题。

您可以从C ++ STL查看std :: bitset。

那么,32字节并不是特别大。

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

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

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

LibTomMath库具有任意大小的整数所需的逻辑运算。

Apple的iOS 加速框架可能提供256位整数(以及其他大小高达1024位)的逻辑运算,但文档很粗略。