You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何从byte值初始化BitArray以得到预期二进制位序列?

解决C#中从byte获取对应二进制位序列的问题

你用BitArray ba = new BitArray((byte)70);得到大量0的原因是:这个构造函数的参数是BitArray的长度,而非要转换的byte值。它会创建一个包含70个false(对应0)的BitArray,和你要的byte位转换完全无关。

最简转换方法

要把byte值的二进制位转成BitArray,需要用接收byte[]的构造函数:

byte value = 70;
BitArray ba = new BitArray(new byte[] { value });

此时ba的长度是8,对应70的二进制位,但注意BitArray是按从最低位(LSB)到最高位(MSB)的顺序存储的。70的二进制是01000110(十进制70 = 64 + 4 + 2),所以ba的位序列是:
{0, 1, 1, 0, 0, 0, 1, 0}

若需要从最高位到最低位的序列

如果你预期的是{0,1,1,1,0,0,0,0}(对应二进制01110000,即十进制112),或者只是想把BitArray的顺序反转成高位在前,可以直接调用Reverse()方法:

ba.Reverse();

反转后70对应的序列会变成{0, 1, 0, 0, 0, 1, 1, 0},和你预期的序列不符的话,需要确认你要转换的byte值是否正确——01110000对应的byte是112,而非70。

直接获取位序列的其他方式

如果不需要BitArray,只是想得到二进制位的列表,也可以用位运算直接遍历:

byte value = 70;
List<bool> bits = new List<bool>(8);
for (int i = 7; i >= 0; i--)
{
    bits.Add((value & (1 << i)) != 0);
}
// bits结果是 {false, true, false, false, false, true, true, false},对应01000110的高位到低位顺序

内容的提问来源于stack exchange,提问作者zapdbf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 03:10:44