.NET Micro Framework 是否有 BitArray 替代品?
我正在考虑简单地使用 bool[],但是你怎么能把它转换回来
变成一个字节[]?
在完整的框架中,考虑到“bits”是一个BitArray,以下工作:
byte[] data = new byte[dimensions / 8];
bits.CopyTo(data, 0);
但是我似乎在微框架中找不到 BitArray 类
最佳答案
复制 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
示例相同。关于.net - .NET Micro Framework 的 BitArray 替代方案,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4107039/