Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.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# 如何访问MemoryStream中的某组字节?_C#_Stream_Byte - Fatal编程技术网

C# 如何访问MemoryStream中的某组字节?

C# 如何访问MemoryStream中的某组字节?,c#,stream,byte,C#,Stream,Byte,我有一个MemoryStream,在do…while循环期间读取一些数据,我需要检查已读取的最后5个字节 如何访问MemoryStream中读取的最后5个字节?只需将位置设置为后面5个字节,然后重新读取这些字节: byte[] GetLast5BytesRead(MemoryStream stream) { // TODO: Validation that stream.Position is at least 5 byte[] ret = new byte[5]; st

我有一个MemoryStream,在
do…while
循环期间读取一些数据,我需要检查已读取的最后5个字节


如何访问MemoryStream中读取的最后5个字节?

只需将位置设置为后面5个字节,然后重新读取这些字节:

byte[] GetLast5BytesRead(MemoryStream stream)
{
    // TODO: Validation that stream.Position is at least 5
    byte[] ret = new byte[5];
    stream.Position -= 5;
    // TODO: Consider throwing an exception if this doesn't return 5
    Stream.Read(ret, 0, 5);
    return ret;
}

我以为
Seek
只是设置流的位置?如果你知道如何完成我的要求,如果你能给出答案,我将不胜感激?溪流不会,那是你的工作:)是的,成功了。我唯一需要改变的是
stream.Position-=5
流位置-=6如果你编码
stream.Seek(-5,SeekOrigin.Current)
stream.Position-=5会更好吗?我个人不认为有什么区别,但是如果你能解释一下它的好处,我会很高兴的。应该注意的是,
Seek()
在这里同样有效:
stream.Seek(-5,SeekOrigin.Current)
。对于
内存流
,如果查看源代码,
Seek()
直接设置位置。使用
Position
属性稍微有效一些,但效率不高。对于其他类型的流(例如,磁盘基i/o),设置位置可能会调用引擎盖下的
Seek()。