如何将短片转换为bool []?

The*_*l26 -3 c#

如何在C#中将短片转换为布尔数组(bool [])?我正在寻找一种算法,多种选择将受益于它们的优点和缺点.

因此,例如,如果我有一个短的= 132,即二进制10000100

所以我想要一个{false,false,true,false,false,false,false,true}的数组

bool[] ToArrayOfBool(short source)
{
    bool[] result = new bool[16];

    ///Do Some stuff here


    return result;
}
Run Code Online (Sandbox Code Playgroud)

Joh*_* Wu 5

您可以使用BitArray类:

byte input = 132;
var bits = new BitArray(new byte[] { input });
foreach (var b in bits)
{
    Console.WriteLine(b);
}
Run Code Online (Sandbox Code Playgroud)

这会产生一个,IEnumerable<bool>但你也可以将它转换为一个数组:

byte input = 132;
var bits = new BitArray(new byte[] { input }).Cast<bool>().ToArray();
foreach (var b in bits)
{
    Console.WriteLine(b);
}
Run Code Online (Sandbox Code Playgroud)

输出:

False
False
True
False
False
False
False
True
Run Code Online (Sandbox Code Playgroud)

您也可以将其保留为a short,并使用类似这样的扩展方法获取所需的位:

public static bool GetBit(this short This, int bitNumber)
{
    return (This & (1 << bitNumber)) != 0;
}

for (int i=0; i<8; i++)
{
    Console.WriteLine(input.GetBit(i));
}
Run Code Online (Sandbox Code Playgroud)

DotNetFiddle上的示例