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];
}
![](https://profile-avatar.csdnimg.cn/36ab07e2e9b24c67afc5b50bba049c13_qq_61878091.jpg!4)
c#索引超出数组界限
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
5条回答 默认 最新
- CSDN专家-showbo 2022-07-05 12:01关注
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]; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用 1
悬赏问题
- ¥15 在若依框架下实现人脸识别
- ¥15 网络科学导论,网络控制
- ¥100 安卓tv程序连接SQLSERVER2008问题
- ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
- ¥15 metadata提取的PDF元数据,如何转换为一个Excel
- ¥15 关于arduino编程toCharArray()函数的使用
- ¥100 vc++混合CEF采用CLR方式编译报错
- ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
- ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
- ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同