C#在DWORD块中读取文件

时间:2018-07-11 09:43:28

标签: c# arrays filestream dword

我正在尝试将二进制文件读入字节数组。

我需要读取DWORD块(或4个字节)中的文件,并将每个块存储到字节数组的单个元素中。这是我到目前为止所取得的成就。

using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read))
{
    var block = new byte[4];
    while (true)
    {
       byte[] temp = new byte[4];
       fs.Read(temp, 0, 4);
       uint read = (byte)BitConverter.ToUInt32(temp, 0);
       block[0] = read???
    }
}

但是,无法将uint read转换为block[0]处的元素。我似乎找不到一种不会产生错误的方法。

感谢您的输入。

1 个答案:

答案 0 :(得分:1)

// read all bytes from file
var bytes = File.ReadAllBytes("data.dat");

// create an array of dwords by using 4 bytes in the file
var dwords = Enumerable.Range(0, bytes.Length / 4)
                       .Select(index => BitConverter.ToUInt32(bytes, index * 4))
                       .ToArray();

// down-casting to bytes
var dwordsAsBytes = dwords.Select(dw => (byte)dw).ToArray();