Rumah >pembangunan bahagian belakang >C++ >Bagaimana dengan cekap menukar aliran ke array byte dalam .net?
Input transformasi ke array byte adalah tugas yang sama dalam pengaturcaraan. Terdapat banyak cara untuk mencapai tujuan ini.
Gunakan BinaryReader
Dalam .NET 3.5, kaedah yang biasa digunakan adalah menggunakan kelas BinaryReader, seperti yang ditunjukkan dalam serpihan kod di bawah:
Kaedah ini memperuntukkan pelbagai panjang yang ditentukan dan membaca semua kandungan aliran ke dalam array. Walau bagaimanapun, ia bergantung kepada pemahaman yang tepat tentang panjang aliran, dan ini tidak selalu tersedia.
<code class="language-csharp">Stream s; byte[] b; using (BinaryReader br = new BinaryReader(s)) { b = br.ReadBytes((int)s.Length); }</code>baca dan tulis dalam blok
Jika panjang aliran tidak boleh dipercayai atau tidak boleh dipercayai, penggunaan segmen bulat untuk membaca aliran mungkin lebih efisien:
Kaedah ini berulang kali membaca data ke dalam penampan sehingga akhir arus. Ia mengumpul data ke dalam memoristream sebelum mengembalikan array byte.atau, dalam versi .net 4 dan lebih tinggi, anda boleh menggunakan stream.copyto untuk mencapai hasil yang sama seperti kitaran di atas:
<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>
Langkah berjaga -jaga lain
<code class="language-csharp">using (MemoryStream ms = new MemoryStream()) { s.CopyTo(ms); return ms.ToArray(); }</code>pilihan kaedah ini bergantung kepada beberapa faktor:
Kebolehpercayaan panjang aliran:
Jika diketahui dan boleh dipercayai, penggunaan pembaca binari dapat meningkatkan kecekapan.Stream:
Atas ialah kandungan terperinci Bagaimana dengan cekap menukar aliran ke array byte dalam .net?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!