Rumah > pembangunan bahagian belakang > C++ > Bagaimana dengan cekap menukar aliran input ke array byte dalam .net?

Bagaimana dengan cekap menukar aliran input ke array byte dalam .net?

Barbara Streisand
Lepaskan: 2025-01-31 07:06:13
asal
392 orang telah melayarinya

How to Efficiently Convert an Input Stream to a Byte Array in .NET?

Menukar aliran input ke tatasusunan byte dalam .net: analisis perbandingan

.NET menawarkan beberapa cara untuk mengubah aliran input ke dalam array byte. Artikel ini membandingkan kaedah biasa, menonjolkan kekuatan dan kelemahan mereka.

Pendekatan paling mudah menggunakan

, seperti yang ditunjukkan di bawah: BinaryReader.ReadBytes

<code class="language-csharp">using (BinaryReader br = new BinaryReader(s))
{
    b = br.ReadBytes((int)s.Length);
}</code>
Salin selepas log masuk
Ini adalah cekap jika panjang aliran (

) diketahui terlebih dahulu. Walau bagaimanapun, ini tidak selalu berlaku. s.Length

Untuk aliran dengan panjang yang tidak diketahui, penyelesaian yang lebih mantap diperlukan. Kaedah berikut, menggunakan

, mengendalikan aliran panjang berubah-ubah dengan berkesan: Stream.Read

<code class="language-csharp">public static byte[] ReadFully(Stream input)
{
    byte[] buffer = new byte[16 * 1024];
    using (MemoryStream ms = new MemoryStream())
    {
        int read;
        while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
        {
            ms.Write(buffer, 0, read);
        }
        return ms.ToArray();
    }
}</code>
Salin selepas log masuk
Kaedah ini secara beransur -ansur membaca aliran ke dalam penampan sehingga semua data diproses.

.net 4.0 dan kemudian versi menawarkan alternatif yang lebih ringkas dan cekap menggunakan

: Stream.CopyTo

<code class="language-csharp">public static byte[] ReadFully(Stream input)
{
    using (MemoryStream ms = new MemoryStream())
    {
        input.CopyTo(ms);
        return ms.ToArray();
    }
}</code>
Salin selepas log masuk
Ini mencapai hasil yang sama dengan kaedah sebelumnya tetapi dengan kesimpulan yang lebih baik.

Kaedah optimum bergantung kepada keperluan khusus anda.

sesuai apabila panjang aliran diketahui, manakala BinaryReader.ReadBytes (sama ada pelaksanaan) menyediakan penyelesaian yang boleh dipercayai untuk aliran panjang yang tidak diketahui atau berubah. Kaedah Stream.ReadFully adalah pilihan yang paling berkesan dan boleh dibaca untuk .NET 4.0 dan ke atas. Stream.CopyTo

Atas ialah kandungan terperinci Bagaimana dengan cekap menukar aliran input ke array byte dalam .net?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan