Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从x位置开始读取y值的二进制文件?_C#_Binaryreader - Fatal编程技术网

C# 如何从x位置开始读取y值的二进制文件?

C# 如何从x位置开始读取y值的二进制文件?,c#,binaryreader,C#,Binaryreader,我需要从一个二进制文件中读取一定数量的短(int16)数据点,从一个特定的位置开始。谢谢 您只需在传递给BinaryReader的流上调用Seek方法,并将其传递到要开始读取的文件中的位置 然后,将流传递给BinaryReader后,您可以根据需要多次调用ReadInt16方法。类似的操作应该可以为您完成: private IEnumerable<Int16> getShorts(string fileName, int start, int count) using(var str

我需要从一个二进制文件中读取一定数量的短(int16)数据点,从一个特定的位置开始。谢谢

您只需在传递给BinaryReader的流上调用Seek方法,并将其传递到要开始读取的文件中的位置


然后,将流传递给BinaryReader后,您可以根据需要多次调用ReadInt16方法。

类似的操作应该可以为您完成:

private IEnumerable<Int16> getShorts(string fileName, int start, int count)
using(var stream = File.OpenRead(fileName))
{
   stream.Seek(start);
   var reader = new BinaryReader(stream);
   var list = new List<int16>(count);
   for(var i = 0;i<count;i++)
   {
      list.Add(reader.ReadInt16());
   }
}
private IEnumerable getShorts(字符串文件名、int开始、int计数)
使用(var stream=File.OpenRead(文件名))
{
stream.Seek(开始);
var reader=新的二进制读取器(流);
var列表=新列表(计数);

对于(var i=0;i是否必须将start乘以2以适应由2字节值组成的文件?@mikeh,
Seek
只查找给定数量的字节。因此,这实际上取决于
start
的含义。在本例中,start是您希望用作起始位置的字节。如果您希望给出开始读取的短字符,则可以simply do.Seek(开始*2)