7

ソースからシステム IO ストリームを受信して​​います。string が含まれている場合にのみ、ストリーム オブジェクトを処理します"MSTND"

ストリームを文字列に変換しない限り、ストリームでできることはあまりないことに気付きました。文字列変換は、部分文字列の一致のみを対象としています。でも、時間や場所をとられるようなことはしたくありません。部分文字列の一致のためだけに、Stream から文字列への変換はどのくらいの時間/スペースを消費しますか?

私が書いたコードは次のとおりです。

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

2 に答える 2

1

ストリーム内のどこでこのシーケンスを期待しているかによっては、文字列に変換して部分文字列を実行するのがかなり効率的です。毎回標準的な場所にある場合は、必要なバイト数を読み取って文字列に変換できます。

参考のためにこれを見てください: http://msdn.microsoft.com/en-us/library/system.io.stream.read.aspx

または、文字列「MSTND」を byte[] に変換し、ストリームで byte[] を検索することもできます。

編集:

エンコーディングを手動で指定せずに C# で文字列の一貫したバイト表現を取得するにはどうすればよいですか? 文字列をバイト[]に変換するのに役立ちます。

于 2013-04-09T06:52:43.167 に答える