如何在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)
您可以使用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)
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |