首頁 >後端開發 >C++ >如何有效地將輸入流轉換為C#中的字節數組?

如何有效地將輸入流轉換為C#中的字節數組?

Patricia Arquette
Patricia Arquette原創
2025-01-31 06:56:09309瀏覽

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>

對於長度未知的流,必須使用更健壯的迭代方法:

此方法在將數據轉換為字節數組之前讀取塊中的流,將數據累積。 >

.net 4及以上:stream.copyto

>
<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>
.net 4及更高版本的版本使用

>:MemoryStream提供了更高效,更簡潔的解決方案

性能和資源管理:

>

請記住,塊中的閱讀會影響性能。 嘗試不同的緩衝尺寸,以優化您的特定需求。 始終確保正確關閉流程以避免資源洩漏。 Stream.CopyTo

以上是如何有效地將輸入流轉換為C#中的字節數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn