如何指向BinaryStream的特定索引

本文关键字:索引 BinaryStream 何指 | 更新日期: 2023-09-27 18:16:00

我有一个32字节的字节数组。我想从索引位置16到19读取4个字节。我如何指示二进制读取器从索引16开始读取。我正在尝试这些命令

byte[] trace ; // 32 byte array
using (FileStream s = File.OpenRead(filename))
using (BinaryReader r = new BinaryReader(s))
 {
   r.baseStream.Seek(position,SeekOrigin.Begin);
   byte[] by = r.ReadBytes(4);
 }

但我不知道该把什么放在位置上?

如何指向BinaryStream的特定索引

我想我明白了(虽然你的问题中的样本不是很清楚)。

你有一个字节数组trace,里面有32个元素,你想从位置16开始读取4个字节。

假设endianness不是一个变量,您可以使用它来读取作为int值或字节数组的4字节:

using(var memStream = new MemoryStream(trace)) 
{
  //position the stream
  using(var reader = new BinaryReader(memStream)
  {
    memStream.Seek(16, SeekOrigin.Begin);
    var intValue = reader.ReadInt32();
    memStream.Seek(16, SeekOrigin.Begin);
    //now read a byte array
    var byteArray = reader.ReadBytes(4);
  }
}