让我们假设我们有一个布尔值的数组,有些是真的,有些是假的。我喜欢生成一个ushort,并根据数组设置位。
一个ushort由2个字节组成,-组成16位。
因此,数组中的第一个布尔值需要设置ushort的第一位,否则该位将为0。需要对ushort中的每一位重复此操作。
如何设置一个方法存根,该方法存根接受一组bools作为输入并返回编码的ushort?(C#)
发布于 2017-03-22 09:08:14
您可以使用BitConverter类(https://msdn.microsoft.com/en-us/library/bb384066.aspx)将字节转换为整数,并使用二进制操作(如StackOverflow问题中的How can I convert bits to bytes?)将位转换为字节
例如:
//Bools to Bytes...
bool[] bools = ...
BitArray a = new BitArray(bools);
byte[] bytes = new byte[a.Length / 8];
a.CopyTo(bytes, 0);
//Bytes to ints
int newInt = BitConverter.ToInt32(bytes); //Change the "32" to however many bits are in your number, like 16 for a short这只适用于一个int,所以如果您在一个位数组中有多个int,则需要拆分数组才能使用此方法。
发布于 2017-03-22 09:07:47
https://msdn.microsoft.com/en-us/library/system.collections.bitarray(v=vs.110).aspx可能更适合您的用例
bool[] myBools = new bool[5] { true, false, true, true, false };
BitArray myBA = new BitArray(myBools);
foreach (var value in myBA)
{
if((bool)value == true)
{
}
else
{
}
}https://stackoverflow.com/questions/42940803
复制相似问题