我正在尝试使用db.StringSetBit()
目前我有以下内容:
byte[] bitLookup = db.StringGet(key);
BitArray barr = new BitArray(bitLookup);
我的问题是我似乎无法弄清楚返回比特的顺序,因为我得到奇怪的结果,其中的位设置为完全错误的偏移。
答案 0 :(得分:0)
我终于明白了。
迭代BitArray中的位,如果该位置位,则使用以下方法使用设置位的索引计算位位置:
private int keyFromBitIndex(int bitIdx)
{
var upper = (((int)Math.Ceiling(bitIdx / 8d) * 8) - 1);
var lower = (bitIdx - (int)(Math.Floor(bitIdx / 8d) * 8));
return upper - lower;
}