3

.NET Micro Frameworkの代わりにBitArrayはありますか?単純にbool[]を使用することを考えていましたが、どうすればそれをbyte []に​​戻すことができますか?

完全なフレームワークでは、「ビット」がBitArrayであると考えると、次のように機能します。

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

しかし、マイクロフレームワークでBitArrayクラスが見つからないようです

4

3 に答える 3

5

の機能を複製することはそれほど難しくありません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上記の例と同じです。

于 2010-11-05T15:20:02.870 に答える
2

BitArray の実装は 802.15.4 スタックにあります。Porting Kit で BitArray.cs を検索するだけです。

于 2011-12-16T08:03:09.510 に答える
0

.net マイクロフレームワークの配列をアップロードしました。

http://code.tinyclr.com/project/310/bitarray-class/

お役に立てれば。

于 2011-05-23T10:17:08.057 に答える