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>
) diketahui terlebih dahulu. Walau bagaimanapun, ini tidak selalu berlaku. s.Length
, 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>
.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>
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!