正确的方法将8个bool转换为1个字节

Gui*_*rme 2 c# optimization byte boolean

简单的问题:考虑到bool(true,false)与位(1,0)相同,在C#中将8个bool转换为字节的正确方法是什么?

例子:

true,true,true,true,true,true,true,true == 11111111 == 255

true,false,false,false,false,false,false,false == 10000000 == 128

false,false,false,false,false,false,false,false == 00000000 == 0

以上是第一部分.我想创建一个扩展方法,如下所示:

    public static byte[] ToByteArray(this bool[] bitArray)
    {
          // stuff here
          return byteArray;    
    }
Run Code Online (Sandbox Code Playgroud)

结果必须是byteArray,其元素比bool数组少八倍.

Tig*_*ran 11

你可能会搜索BitArray构造函数(Boolean [])

对于rapresenting位你有特殊的结构BitArrayC#.所以你的代码看起来像这样:

var booleans = new bool[]{true, false, false, false};
var bitArray = new BitArray(booleans); 
Run Code Online (Sandbox Code Playgroud)

  • @Guilherme:`CopyTo()`. (2认同)