【问题标题】:C# BitArray with leading zeros带有前导零的 C# BitArray
【发布时间】:2017-11-16 02:05:42
【问题描述】:

我尝试过这样的事情:

BitArray bits = new BitArray(00001110);

但结果是1110

BitArray 似乎切断了前导零。

是否可以创建带有前导零的 BitArray?

【问题讨论】:

  • 您在寻找什么输出格式 - BitArray 不会有前导零。你想把它转换成字符串吗?
  • “但结果是 1110” -- 不是你发布的代码,不是。唯一匹配的构造函数是 BitArray(int) 重载,在这种情况下,00001110 将被视为 int 值,指定一个 BitArray 对象,其中包含一千、一百一十位,全部初始化为零。请修正您的问题,使其包含一个良好的minimal reproducible example,以可靠地重现您的问题。
  • 从 C# 7 开始,您可以使用二进制文字,如 new BitArray(0b0000_1110);
  • @mikez 这仍然只是设置数组的大小(为 14)。您必须改为传递 byte[] 数组。看我的回答。
  • @adjan 哦,完全正确。我没有看文档。

标签: c# bit bitarray


【解决方案1】:
BitArray bits = new BitArray(00001110);

只需将 BitArray 的大小设置为1110。你想要的是

bool[] array = new bool[] {false, false, false, false, true, true, true, false};
BitArray bits = new BitArray(array);

或使用

BitArray bits = new BitArray(new byte[] {0x70});

这是相当不直观的,因为第二个数字的位放在第一位,每个数字的位按顺序颠倒。

此外,在 C# 7.0 中,您也可以使用二进制文字设置字节值:

BitArray bits = new BitArray(new byte[] {0b0111_0000});

【讨论】:

    猜你喜欢
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    • 2013-07-01
    • 2018-08-30
    相关资源
    最近更新 更多