c#索引超出数组界限,定义了一个数组,读完了以后设置了一个for循环,然后提示我索引超出数组界限
byte[4] bt0=new byte[4];
byte[4]bt1=new byte[4];
bt0=bread.readbytes(4);
for(int i=0,j=3;i<4;i++,j--)
{
bt1[j]=bt0[i];
}
bread是什么对象。可能越界的bt0的操作,应该是数据量不够4个。直接用Array.Reverse反转数组就行,没必要for也就不会出现越界错误,比如下面这样
using System;
namespace demo
{
class Program
{
static void Main(string[] args)
{
byte[] bt0 =new byte[4] { 0, 1, 2, 3 };// bread.readbytes(4)
byte[] bt1 = new byte[4];
bt0.CopyTo(bt1, 0);
Array.Reverse(bt1);
Console.WriteLine(string.Join(",", bt0));
Console.WriteLine(string.Join(",", bt1));
Console.ReadKey();
}
}
}
一定要for改成下面这样,以bt0,bt1最大长度作为界限防止越界错误
for (int i = 0, j = 3,k= Math.Min(bt0.Length, bt1.Length); i < k; i++, j--)
{
bt1[j] = bt0[i];
}
这具体是要看代码的啊
上代码
超出,要么是下标越界,要么是上标越界,修改循环条件
上代码吧,肯定是下标越界了。或者私远程
bread.readbytes(4)的意思是最多读取4个字节
但是流里本来没有4个字节,那么有多少读多少