首页 >后端开发 >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