【问题标题】:How do I convert a boolean list to int?如何将布尔列表转换为 int?
【发布时间】:2017-04-15 12:13:47
【问题描述】:

如何将布尔列表转换为等于解释为字节的布尔值的整数?

public List<Boolean> MyList = new List<Boolean>();
MyList.Add(true);
MyList.Add(true);
MyList.Add(false);
MyList.Add(false);
MyList.Add(false);
MyList.Add(false);
MyList.Add(false);
MyList.Add(false);

这将返回一个 3。

【问题讨论】:

  • 为什么会返回 4?
  • 这将如何返回 4?您是否正在尝试进行一些二进制计算?即使这样,这如何返回 4?
  • 对于每个询问它是如何 4 的人。我认为他希望 false 为 -1,true 为 +1。应该是 -2 + 6 = 4。这个问题肯定需要澄清一下。
  • 抱歉 3...不是 4。二进制转 int。对于造成的混乱,我深表歉意!
  • @BradleyDotNET 好电话。事实证明它毕竟应该是二进制的。

标签: c# list int boolean


【解决方案1】:

你不能,至少不能直接。

可以但是使用BitArray 类 (MSDN) 将您的bool 集合转换为位,然后从中获取一个数字:

BitArray bitField = new BitArray(MyList.ToArray()); //BitArray takes a bool[]
byte[] bytes = new byte[1];
bitField.CopyTo(bytes, 0);
return bytes[0];

BitArray 到值的转换来自:https://stackoverflow.com/a/560131/1783619

请注意,此技术也适用于大于 8 位的数字,但您需要使用 BitConverter (MSDN) 从字节数组中取回值(而不是只返回第一个)

【讨论】:

    猜你喜欢
    • 2015-09-27
    • 2012-02-25
    • 2016-01-19
    • 2016-03-09
    • 2013-07-04
    • 1970-01-01
    • 2011-12-22
    • 2020-01-08
    • 1970-01-01
    相关资源
    最近更新 更多