我有一个内存流读取我的数据的一个特定部分。在二进制文件中,我希望从位置5-8得到一个ReadInt32值。我如何做到这一点:
using (var reader = new BinaryReader(stream))
{
somebyte1
somebyte2
somebyte3
//get only this value
int v = reader.ReadInt32;
}
发布于 2017-11-15 19:09:27
将基流移动到要从以下位置读取的位置:
stream.Seek(4, SeekOrigin.Begin);
using (var reader = new BinaryReader(stream))
{
int v = reader.ReadInt32;
}
发布于 2017-11-15 19:46:33
在.NET中,有可查找的流类型和不允许查找的类型。这是由CanSeek
属性指示的。如果流允许查找( MemoryStream
允许),则可以移动当前位置并读取数据。如果流不允许查找,则您唯一的选择是读取和丢弃数据,直到到达所需数据所在的流位置为止。因此,对您的问题的一般解决方案是:
const int targetPosition = 4;
BinaryReader reader = new BinaryReader(stream);
using (reader) {
if (stream.CanSeek) {
stream.Position = targetPosition;
}
else {
reader.ReadBytes(targetPosition);
}
int result = reader.ReadInt32();
}
https://stackoverflow.com/questions/47315374
复制相似问题