5
バイト配列を大きなビットフィールドとして扱うことができるように、.NETに組み込みクラスまたは何かがありますか?C#のビットフィールドとしてのバイト配列?
バイト配列を大きなビットフィールドとして扱うことができるように、.NETに組み込みクラスまたは何かがありますか?C#のビットフィールドとしてのバイト配列?
BitArrayクラスをご覧ください。
byte[] myBytes = new byte[5] { 1, 2, 3, 4, 5 };
BitArray myBA3 = new BitArray(myBytes);
Console.WriteLine("myBA3");
Console.WriteLine(" Count: {0}", myBA3.Count);
Console.WriteLine(" Length: {0}", myBA3.Length);
Console.WriteLine(" Values:");
PrintValues(myBA3, 8);
public static void PrintValues(IEnumerable myList, int myWidth)
{
int i = myWidth;
foreach (Object obj in myList)
{
if (i <= 0)
{
i = myWidth;
Console.WriteLine();
}
i--;
Console.Write("{0,8}", obj);
}
Console.WriteLine();
}
このコードは、次の出力を生成します。
は、ここでバイト配列を使用しているときに何が起こっているかを説明する例です。
myBA3
Count: 40
Length: 40
Values:
Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7
True False False False False False False False
Bit8 Bit9 Bit10 Bit11 Bit12 Bit13 Bit14 Bit15 ... and so on
False True False False False False False False
True True False False False False False False
False False True False False False False False
True False True False False False False False
いや – Anon
@Anonは...、私はそれを使用してみましたが、それはエンディアンか何かを逆転ているように、それは、内部ドームにいくつかのファンキーなものだ - あなたはBitArrayクラスを使用して、あなたの問題を別の質問を投稿することができます現在のテストや予期しない結果が含まれます。 – SwDevMan81
@Anon: 'BitArray'は内部的に' int [] '配列を使用していると思いますが、どのエンディアンが使用されているか知っているか気にしていません。確かに意味論的な観点から見ると、単なるboolの配列です。 – LukeH