-3

我在问一个简单的问题,但我找不到最简单的方法,我的应用程序读取了一个小文件,只需从 8 字节文件中读取的 8 字节单词“已上传”,将是0 的二进制数组, 1 ...真假列表,长度为8 * 8 = 64位,现在我已经在字符串数组和布尔列表中有这64位,下面的代码更快,我只需要编辑每次使用MemoryStream给我一个 8 位而不是 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待上传

到字节然后写回一个有效的文件。?? 我真的很累,因为我看到很多方法可以将字节数组写成文件,但没有一点......我很累,因为我找不到出路!

4

1 回答 1

1

您可以使用接受字节数组的 BitArray 构造函数

var bitArray = new BitArray(new byte[] { result });

然后您可以调用bitArray.Get(n)以获取字节位置的nresult

至于您的编辑,代码可以简化为:

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.
于 2014-12-29T20:38:09.650 回答