2

簡単な質問: bool (true, false) が bit (1, 0) と同じであることを考えると、C# で 8 つの bool を 1 バイトに変換する正しい方法は何ですか?

例:

真、真、真、真、真、真、真、真 == 11111111 == 255

真、偽、偽、偽、偽、偽、偽、偽 == 10000000 == 128

偽、偽、偽、偽、偽、偽、偽、偽 == 00000000 == 0

以上が第一部です。そのような拡張メソッドを作成したい:

    public static byte[] ToByteArray(this bool[] bitArray)
    {
          // stuff here
          return byteArray;    
    }

結果は、bool 配列の 8 分の 1 の要素を含む byteArray でなければなりません。

4

2 に答える 2

1

堅牢なソリューション(念のため)。

何らかの方法でそれらを 8 つのグループに分割し (順序と調整方法に応じて -LSBまたはRSBに)、サイクルでこのメソッドを呼び出して配列を形成します。

byte GetByte(bool[] bits)
{
    byte result = 0;
    for(int i = 0; i < bits.Length; i++)
        if(byte[i])
            result |= 1 << i;
    return result;
}
于 2013-09-10T15:26:10.877 に答える