使用 StackExchange.Redis 从 Redis 返回 C# 位数组
Returning a C# bitarray from Redis with StackExchange.Redis
我正在尝试取回之前使用 db.StringSetBit()
在密钥上设置的位
目前我有:
byte[] bitLookup = db.StringGet(key);
BitArray barr = new BitArray(bitLookup);
我的问题是,我似乎无法弄清楚这些位的返回顺序,因为我得到了奇怪的结果,其中的位设置在完全错误的偏移量中。
我终于想通了。
迭代 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;
}
我正在尝试取回之前使用 db.StringSetBit()
目前我有:
byte[] bitLookup = db.StringGet(key);
BitArray barr = new BitArray(bitLookup);
我的问题是,我似乎无法弄清楚这些位的返回顺序,因为我得到了奇怪的结果,其中的位设置在完全错误的偏移量中。
我终于想通了。
迭代 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;
}