是否有针对.NET Micro Framework的BitArray替代方案? 我在考虑简单地使用bool [],但是你怎么能把它转换回去 变成一个字节[]?
在完整框架中,考虑“bits”是BitArray,以下工作原理:
byte[] data = new byte[dimensions / 8];
bits.CopyTo(data, 0);
但我似乎无法在微框架中找到BitArray类
答案 0 :(得分:5)
复制BitArray
的功能并不十分困难。首先,如果您需要的位数少于65位,则可以使用long
或更小的位数。
设置个别位:
void Set(ref long ba, int bit)
{
ba |= 1L << bit;
}
要清楚一点:
void Clear(ref long ba, int bit)
{
long mask = 1L << bit;
mask = ~mask;
ba &= mask;
}
查看是否设置了位:
bool IsSet(long ba, int bit)
{
long mask = 1L << bit;
return (ba & mask) != 0;
}
如果你有超过64位,那么你需要创建一个数组(可能是byte[]
),并进行除法以确定你想要修改的字节/位。如果您将long
更改为byte
。
例如,如果你有:
byte[] myBytes = new byte[128];
你有1024位。
设置位:
void Set (int bit)
{
int byte = bit/8;
int bitIndex = bit%8;
myBytes[byte] |= (byte)(1 << bitIndex);
}
其他方法使用相同的数学运算来获取字节和位索引,设置,清除和测试位与上面的long
示例相同。
答案 1 :(得分:2)
您可以在802.15.4堆栈中找到BitArray实现。只需在Porting Kit中搜索BitArray.cs
答案 2 :(得分:0)