c# – 如何将bool []转换为byte []

我有bool数组:

bool[] b6=new bool[] {true, true, true, true, true, false, true, true,
                      true, false, true, false, true, true, false, false };

我怎样才能将其转换为字节数组

> byte [0] = 0xFB
> byte [1] = AC
>等

最佳答案
我相信你想要这样的东西:

static byte[] ToByteArray(bool[] input)
{
    if (input.Length % 8 != 0)
    {
        throw new ArgumentException("input");
    }
    byte[] ret = new byte[input.Length / 8];
    for (int i = 0; i < input.Length; i += 8)
    {
        int value = 0;
        for (int j = 0; j < 8; j++)
        {
            if (input[i + j])
            {
                value += 1 << (7 - j);
            }
        }
        ret[i / 8] = (byte) value;
    }
    return ret;
}

编辑:在澄清要求之前的原始答案:

你没有说过你希望转换做什么.例如,这可以工作:

byte[] converted = Array.ConvertAll(b6, value => value ? (byte) 1 : (byte) 0);

或者类似地(但效率稍低)使用LINQ:

byte[] converted = b6.Select(value => value ? (byte) 1 : (byte) 0).ToArray();

转载注明原文:c# – 如何将bool []转换为byte [] - 代码日志