ホームページ > バックエンド開発 > C++ > 入力ストリームをC#のバイト配列に効率的に変換する方法は?

入力ストリームをC#のバイト配列に効率的に変換する方法は?

Patricia Arquette
リリース: 2025-01-31 06:56:09
オリジナル
307 人が閲覧しました

How to Efficiently Convert an Input Stream to a Byte Array in C#?

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

.NET 4以降のバージョンは、

を使用して、より効率的で簡潔なソリューションを提供します。 Stream.CopyTo

これは、あらゆるサイズのストリームをエレガントに処理します。
<code class="language-csharp">using (MemoryStream ms = new MemoryStream())
{
    input.CopyTo(ms);
    byte[] b = ms.ToArray();
}</code>
ログイン後にコピー

パフォーマンスとリソース管理:

チャンクで読むことはパフォーマンスに影響を与える可能性があることを忘れないでください。 さまざまなバッファサイズを試して、特定のニーズに合わせて最適化します。 リソースリークを避けるために、常に適切なストリーム閉鎖を確認してください

以上が入力ストリームをC#のバイト配列に効率的に変換する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート