首页 > 解决方案 > 偏移量和长度超出了数组的范围

问题描述

我的代码

private static int readinput(byte[] buff, BinaryReader reader)
{
    int size = reader.ReadInt32();
    reader.Read(buff, 0, size);
    return size;
}

reader.Read(buff,0,size)中的异常;例外是偏移量和长度超出了数组的范围或计数大于从索引到源集合末尾的元素数

标签: c#

解决方案


退一步想想你的代码

您编写了一个采用字节数组的方法。我们不知道这个数组有多大,但它是由调用该方法的代码控制的。假设它是 1000 字节长

然后你从其他地方读取一个 int,假设 2000 被读取

然后您尝试将 2000 个字节读入一个只能容纳 1000 个字节的数组,您不执行任何检查以确保您的数组足够大,也不会尝试读取块并在它不够大时连接

这就是为什么你得到你得到的错误,但至于你应该编码什么,我认为你需要考虑更多 - 也许根据你读取的大小 int 调整缓冲区的大小,或者读入大块..


推荐阅读