好的,所以我有一个字节[],我得到使用 File.ReadAllBytes(filename);
我的问题是,我的程序需要将数据从文件作为数组布尔变量。 我已经搜索,但我没有设法找到一种方法来获得正确和高效的转换。 一个例子是:byte [] to bool []用作标志,反之亦然
{ 00101011, 10111010 } ->
{ false, false, true, false, true, false, false, true, true,
false, true, true, true, false, true, false }
我也将需要扭转过程。
我遇到的大多数解决方案都是从每个字节中取出一个布尔值。即得到的bool[]
数组长度与byte[]
数组长度相同,我似乎无法理解这是如何实现的,8位如何导致只有一个布尔值? 在我的情况下,我需要有一个结果数组为:bool[bytes.Length * 8].
非常感谢,任何帮助,高度赞赏。
实现我tryed得到这个工作的解决方案之一,但它是某种错误的,因为生成的文件,这是我读的文件的副本被损坏:
public static bool[] boolsFromFile(string filename)
{
List<bool> b = new List<bool>();
using (FileStream fileStream = new FileStream(filename, FileMode.Open))
using (BinaryReader read = new BinaryReader(fileStream))
{
while (fileStream.Position != fileStream.Length)
b.Add(read.ReadBoolean());
}
return b.ToArray();
}
public static void boolsToFile(string filename, bool[] bools)
{
using (FileStream fileStream = new FileStream(filename, FileMode.Create))
using (BinaryWriter write = new BinaryWriter(fileStream))
{
foreach (bool b in bools)
write.Write(b);
}
}
尝试使用[位运算(http://www.tutorialspoint.com/csharp/csharp_bitwise_operators.htm)。 – Archimaredes
该文件是如何制作的。如果该文件是用BinaryWriter制作的,用BinaryReader读取该文件将是显而易见的。 –
@Esben建议以与写入文件相同的方式读取文件是一个好的方法,但是BinaryWriter [也将bools写入为字节以及](http://stackoverflow.com/questions/10057747/write-one-single-bit -to-二进制文件使用-的BinaryWriter)。 – CodeCaster