gpt4 book ai didi

c# - 了解字节数组的大小

转载 作者:行者123 更新时间:2023-12-04 09:07:49 25 4
gpt4 key购买 nike

我正在阅读这个流行的堆栈溢出问题 Creating a byte array from a stream并希望了解字节数组的工作原理。
在这里的这段代码中:

 byte[] buffer = new byte[16 * 1024];
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = PictureStream.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}

return ms.ToArray();
}
这是我不明白的:
我迷失了这个数组设置的大小。例如,我使用该代码块将图像流转换为字节数组,但我通常读取大于 2 兆字节的图像,这远大于图片中读取的数组的大小 - 16* 1024 字节。但是,上面的代码完全可以将图像从流转换为字节数组,不会出现“越界索引”错误。
那么我的数组如何比我正在阅读的照片更小,但仍然能够完全正常地阅读它?

最佳答案

您传递的数组只是一个缓冲区。当您从流中读取时,它会返回读取的字节数并用那么多元素填充缓冲区数组(它并不总是完全填充)。然后你将那么多字节写入内存流。重复此过程,直到没有更多字节可从文件中读取。
您会注意到 ToArray 生成的数组远大于您的缓冲区大小。

关于c# - 了解字节数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63414662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com