加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – System.IO.Stream中的模式搜索

发布时间:2020-12-15 05:39:00 所属栏目:百科 来源:网络整理
导读:我从源接收系统IO流.只有当它包含字符串“MSTND”时,我才会继续使用流对象. 我意识到除非我将它转换为字符串,否则我在流上无能为力.字符串转换仅用于子字符串匹配.但我不想做任何占用大量时间或空间的事情.时间/空间密集是如何从Stream转换为字符串仅用于子
我从源接收系统IO流.只有当它包含字符串“MSTND”时,我才会继续使用流对象.

我意识到除非我将它转换为字符串,否则我在流上无能为力.字符串转换仅用于子字符串匹配.但我不想做任何占用大量时间或空间的事情.时间/空间密集是如何从Stream转换为字符串仅用于子字符串匹配?

我写的代码是:

private bool StreamHasString (Stream vStream)
{
     bool containsStr = false;
     byte[] streamBytes = new byte[vStream.Length];
     vStream.Read( streamBytes,(int) vStream.Length);
     string stringOfStream = Encoding.UTF32.GetString(streamBytes);
     if (stringOfStream.Contains("MSTND"))
     {
        containsStr = true;
     }     
     return containsStr ;
}

解决方法

根据您期望此序列的流中的位置,转换为字符串以执行子字符串将非常有效.如果每次都在标准位置,那么您可以读取所需的字节数并将它们转换为字符串.

看看这个以供参考:
http://msdn.microsoft.com/en-us/library/system.io.stream.read.aspx

或者,您可以将字符串“MSTND”转换为byte []并在流中搜索byte [].

编辑:

我发现How do I get a consistent byte representation of strings in C# without manually specifying an encoding?应该有助于将字符串转换为byte [].

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读