使用true或false标志将字节转换为8位

时间:2013-01-17 13:00:53

标签: c# .net byte bit bitarray

我正在尝试阅读byte并转换为bit。我正在尝试创建一个标记系统。

所以字节3会将前两个标志提升为true。但是,当我尝试转换它时,只需将byte的值作为BitArray的长度传递。非常感谢任何帮助。

BinaryReader br = new BinaryReader(filestream);

Byte flag = br.ReadByte();

BitArray flags = new BitArray(flag); 

record.Isbool = flags[0];
record.Isbool1 = flags[1];

etc

4 个答案:

答案 0 :(得分:3)

new BitArray(flag);使用BitArray(Int32 length)构造函数。这设定了容量,而不是你想要的容量。

您可以使用

    new BitArray(new byte[] { flag }); 

答案 1 :(得分:1)

您需要使用

BitArray flags = new BitArray(new byte[] {flag});

byte[]重载使用字节中的位;在你调用int重载的那一刻,它会给出你发现的长度。

答案 2 :(得分:1)

BinaryReader br = new BinaryReader(filestream);

Byte flag = br.ReadByte();

BitArray flags = new BitArray(new byte[] {flag}); 

record.Isbool = flags[0];
record.Isbool1 = flags[1];

应该可以通过调用BitArray(byte[])构造函数来工作。

答案 3 :(得分:0)

你试图掩饰吗? int flag = value& 0x01掩盖第1位。