.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/

10-11 15:15