c# - 偏移量和长度超出了数组的范围
问题描述
我的代码
private static int readinput(byte[] buff, BinaryReader reader)
{
int size = reader.ReadInt32();
reader.Read(buff, 0, size);
return size;
}
reader.Read(buff,0,size)中的异常;例外是偏移量和长度超出了数组的范围或计数大于从索引到源集合末尾的元素数
解决方案
退一步想想你的代码
您编写了一个采用字节数组的方法。我们不知道这个数组有多大,但它是由调用该方法的代码控制的。假设它是 1000 字节长
然后你从其他地方读取一个 int,假设 2000 被读取
然后您尝试将 2000 个字节读入一个只能容纳 1000 个字节的数组,您不执行任何检查以确保您的数组足够大,也不会尝试读取块并在它不够大时连接
这就是为什么你得到你得到的错误,但至于你应该编码什么,我认为你需要考虑更多 - 也许根据你读取的大小 int 调整缓冲区的大小,或者读入大块..
推荐阅读
- elasticsearch - 控制聚合中创建的桶数
- firebase-realtime-database - 一旦时间戳上指示的时间过去,如何使数据不可读?
- php - 我通过 laravel 节点上的 redis 发布(发射),但所有进程都在队列中工作,我想同时运行
- angular - 错误类型错误:您在预期流的位置提供了“未定义”。您可以在 Angular 服务中提供 Observable、Promise、Array 或 Iterable
- javascript - getComputedStyle local vs every time in function Performance
- r - 如何为大型数据集实现 fanny(软聚类)?
- c# - 为什么 F# 的默认集合是排序的,而 C# 不是?
- angular - 如何在primeng p-multiselect(占位符)中更改默认标签“选择”
- three.js - 发光效果着色器适用于桌面,但不适用于移动设备
- uwp - 我们如何从 Azure IoT 中心远程更新在树莓派 3 上运行的 UWP 应用程序?