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