我问一个简单的问题,但我找不到最简单的方法,我的应用程序读取一个小文件,简单的8字节字“上传“从8字节文件中读取,将是 0,1 ... 的二进制数组或 true-false 列表,长度 8 * 8 = 64位,现在我已经在字符串数组中有64位并且还有布尔列表,下面的代码更快,我只需要编辑代码,每次给我8位带有 MemoryStream
的1字节.. **** string path = openFileDialog1.FileName;
byte[] file = File.ReadAllBytes(path);
MemoryStream memory = new MemoryStream(file);
BinaryReader reader = new BinaryReader(memory);
for (int i = 0; i <= file.Length - 1; i++)
{
byte result = reader.ReadByte();
}
编辑完这段代码后,我只需要回写这些位
01110101-01110000-01101100-01101111-01100001-01100100-01100101-01100100 待上传
到字节然后将其写回有效文件。我真的很累,因为我看到很多方法把一个字节数组写成一个文件而不是一个位......我很累,因为我找不到出路!!
答案 0 :(得分:0)
您可以使用BitArray constructor accepting a byte array:
var bitArray = new BitArray(new byte[] { result });
然后,您可以致电bitArray.Get(n)
以获取n
字节位置result
的位。
至于你的编辑,代码可以简化为:
string output = "";
byte[] fileBytes = File.ReadAllBytes(path);
var bitArray = new BitArray(fileBytes);
// Loop over all bits in the bitarray, containing all bytes read from the file.
for (int i = 0; i < bitArray.Length; i++)
{
output += bitArray.Get(i) ? "1" : "0";
// Output a dash every 8 characters.
if ((i + 1) % 8 == 0)
{
output += "-"
}
}
// Write `output` string to file.