Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于.NET Micro Framework的位阵列替代方案_.net_.net Micro Framework_Bitarray - Fatal编程技术网

用于.NET Micro Framework的位阵列替代方案

用于.NET Micro Framework的位阵列替代方案,.net,.net-micro-framework,bitarray,.net,.net Micro Framework,Bitarray,对于.NET Micro Framework是否有位阵列替代方案? 我在考虑简单地使用bool[],但是如何将它转换回来呢 变成一个字节[] 在整个框架中,考虑到“位”是一个位数组,以下工作: byte[] data = new byte[dimensions / 8]; bits.CopyTo(data, 0); 但是我似乎在微框架中找不到BitArray类复制BitArray的功能并不十分困难。首先,如果您需要少于65位,那么您可以使用long或更小的字符 要设置单个位,请执行以下操作:

对于.NET Micro Framework是否有位阵列替代方案? 我在考虑简单地使用bool[],但是如何将它转换回来呢 变成一个字节[]

在整个框架中,考虑到“位”是一个位数组,以下工作:

byte[] data = new byte[dimensions / 8];
bits.CopyTo(data, 0);

但是我似乎在微框架中找不到BitArray类

复制
BitArray的功能并不十分困难。首先,如果您需要少于65位,那么您可以使用
long
或更小的字符

要设置单个位,请执行以下操作:

void Set(ref long ba, int bit)
{
    ba |= 1L << bit;
}
你有1024位

要设置位,请执行以下操作:

void Set (int bit)
{
    int byte = bit/8;
    int bitIndex = bit%8;
    myBytes[byte] |= (byte)(1 << bitIndex);
}
void集(int位)
{
int字节=位/8;
int bitIndex=位%8;

myBytes[byte]|=(byte)(1我上传了一个.net微框架的数组:


希望这有帮助。

您可以在802.15.4堆栈中找到一个位数组实现。只需在移植工具包中搜索BitArray.cs

您到底需要什么?也许可以操作的
字节就足够了?BitArray是使用整数和按位实现的operators@Bobby不,确实需要在位级别操作:-)如果micro framework上有
Interlocated.CompareExchange
可用,则可以使用它使任何所需类型的位操作原子化。在循环中,读取单词的旧值,计算新值,然后
将旧值与新值进行比较;重新循环,直到
CompareExchange
成功。I person就像有一个原子方法来计算
Thebits=(Thebits&~Mask)^NewBits)
。在
Mask
NewBits
中清除的位被单独保留;在
Mask
中清除的位和在
NewBits
中设置的位被切换。在
Mask
中设置的位将从
NewBits
复制。
bool IsSet(long ba, int bit)
{
    long mask = 1L << bit;
    return (ba & mask) != 0;
}
byte[] myBytes = new byte[128];
void Set (int bit)
{
    int byte = bit/8;
    int bitIndex = bit%8;
    myBytes[byte] |= (byte)(1 << bitIndex);
}