说我有以下BitArray combinedResults = searchBitArray.And(genreBitArray);
其中包含正位,即100100110000
如何获得所有积极的索引?
答案 0 :(得分:0)
这是第一个,明显是贫民窟,破解它:
BitArray ba = new BitArray(new bool[] {true,false,false,true,false,false,true,true,false,false,false,false});
List<int> pos = new List<int>();
for (int i = 0; i < ba.Length; i++)
{
if (ba[i])
pos.Add(i);
}
这会给你一个包含0,3,6,7的列表。你可以从ba.Length - 1开始,如果你需要从右到左阅读,则减少到零。
编辑:包含在扩展方法中,只是因为:
void Main()
{
BitArray ba = new BitArray(new bool[] {true,false,false,true,false,false,true,true,false,false,false,false});
List<int> positives = ba.GetBitPositions(true);
List<int> negatives = ba.GetBitPositions(false);
}
public static class BitArrayExtensions
{
public static List<int> GetBitPositions(this BitArray ba, bool MatchCondition)
{
List<int> pos = new List<int>();
for (int i = 0; i < ba.Length; i++)
{
if (ba[i] == MatchCondition)
pos.Add(i);
}
return pos;
}
}