.NET Micro Framework 是否有 BitArray 替代品?我在考虑简单地使用 bool[],但是如何将它转换回 byte[] 呢?
在完整的框架中,考虑到“位”是一个 BitArray,以下工作:
byte[] data = new byte[dimensions / 8];
bits.CopyTo(data, 0);
但我似乎在微框架中找不到 BitArray 类
.NET Micro Framework 是否有 BitArray 替代品?我在考虑简单地使用 bool[],但是如何将它转换回 byte[] 呢?
在完整的框架中,考虑到“位”是一个 BitArray,以下工作:
byte[] data = new byte[dimensions / 8];
bits.CopyTo(data, 0);
但我似乎在微框架中找不到 BitArray 类
复制BitArray
. 首先,如果您需要少于 65 位,那么您可以使用 along
或更小。
设置单个位:
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
上面的示例相同。
您可以在 802.15.4 堆栈中找到 BitArray 实现。只需在移植工具包中搜索 BitArray.cs