c#バイト配列への入力ストリーム:実用的なガイド
入力ストリームをバイト配列に変換することは、C#でバイナリデータを処理する際の一般的なタスクです。 最良の方法は、ストリームのサイズを知っているかどうかに依存します。
既知のストリームサイズ:
ストリームの長さが利用可能な場合、は簡単なソリューションを提供します:BinaryReader.ReadBytes
<code class="language-csharp">using (BinaryReader br = new BinaryReader(s)) { byte[] b = br.ReadBytes((int)s.Length); }</code>これは、ストリーム全体をバイト配列に直接読み取ります。
未知のストリームサイズ:
長さが不明なストリームの場合、より堅牢で反復的なアプローチが必要です:
<code class="language-csharp">using (MemoryStream ms = new MemoryStream()) { byte[] buffer = new byte[16 * 1024]; // Adjust buffer size as needed int read; while ((read = input.Read(buffer, 0, buffer.Length)) > 0) { ms.Write(buffer, 0, read); } byte[] b = ms.ToArray(); }</code>このメソッドはチャンクのストリームを読み取り、バイト配列に変換する前に
でデータを蓄積します。
MemoryStream
.NET 4以降のバージョンは、
:を使用して、より効率的で簡潔なソリューションを提供します。
Stream.CopyTo
<code class="language-csharp">using (MemoryStream ms = new MemoryStream()) { input.CopyTo(ms); byte[] b = ms.ToArray(); }</code>パフォーマンスとリソース管理:
チャンクで読むことはパフォーマンスに影響を与える可能性があることを忘れないでください。 さまざまなバッファサイズを試して、特定のニーズに合わせて最適化します。 リソースリークを避けるために、常に適切なストリーム閉鎖を確認してください
以上が入力ストリームをC#のバイト配列に効率的に変換する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。