我意识到除非我将它转换为字符串,否则我在流上无能为力.字符串转换仅用于子字符串匹配.但我不想做任何占用大量时间或空间的事情.时间/空间密集是如何从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 [].
总结以上是内存溢出为你收集整理的c# – System.IO.Stream中的模式搜索全部内容,希望文章能够帮你解决c# – System.IO.Stream中的模式搜索所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)