我正在尝试在iOS应用程序中实现一个使用大型位掩码的算法。每个位掩码的长度最多为256位(32字节)。我需要在掩码中的任意位置快速获取/设置位等。
是否有C或Objective-C的内置语言功能使这种事情变得容易,或者我是否应该编写自己的函数来操作任意字符数组中的位?看起来自己做起来似乎并不太难,但是如果已经有一些东西可以有效而干净地做到这一点,我宁愿不自己写。
答案 0 :(得分:3)
看一下CFMutableBitVector,它旨在解决这类问题。
答案 1 :(得分:0)
您可以从C ++ STL中查看std :: bitset。
答案 2 :(得分:0)
嗯,32字节不是特别大。
您可以通过创建一个包含8个掩码字节的数组来获取/设置位,使用#位的低3位索引该数组,并使用#位的其余5位来寻址保存位的字节数组
我不记得标准C库中有和/或/ x字节字符串操作,但是为了执行操作并不难写,例如,执行andbytes(target, source, count)
的函数在你的位之间。
您需要做的主要是弄清楚如何控制位阵列的存储。如果将它们固定为256位,那么使用包含这些位的char [8]数组生成Objective-C对象是最有意义的。
答案 3 :(得分:0)
LibTomMath库对任意大小的整数都有必要的逻辑运算。
Apple的iOS Accelerate Framework可能提供256位整数(以及最多1024位的其他大小)的逻辑运算,但文档很粗略。