我正在尝试在一个iOS应用程序中实现一个算法,它将使用较大的位掩码。每个位掩码的长度可达256位(32字节)。我需要在掩码中的任意位置快速获取/设置位,等等。
C或Objective-C有没有什么内置的语言特性可以让这类事情变得容易做,或者我是否应该编写自己的函数来操作任意字符数组中的位?我自己做似乎并不太难,但如果已经有一些东西可以高效、干净地做到这一点,我宁愿不写我自己的。
发布于 2011-09-13 10:29:35
看看CFMutableBitVector,它就是为处理这类问题而设计的。
发布于 2011-09-13 10:27:39
您可以查看C++ STL中的std::位集。
发布于 2011-09-13 10:28:05
嗯,32字节并不是特别大。
您可以通过创建一个由8个掩码字节组成的数组,使用bit #的低3位对数组进行索引,并使用bit #的剩余5位来寻址包含这些位的字节数组来获取/设置位。
我不记得在标准C库中有和/或/xor字节串操作,但它并不是很难编写,例如,一个做andbytes(target, source, count)的函数,以便在你的位集之间进行操作。
您需要做的主要事情是弄清楚如何控制位数组的存储。如果它们固定在256位,那么最有意义的做法是将它们作为Objective-C对象,并使用包含这些位的char8数组。
https://stackoverflow.com/questions/7395998
复制相似问题