swift byte数组添加元素时报错 索引超出范围

问题描述

swift byte数组添加元素时报错 索引超出范围
代码如下

  func packData(type:Intcontent:[Int]length:Int) -> [UInt8] {        var i:Int = 0        var pack:[UInt8] = []        pack[0] = (UInt8)(0xff&0xef)        pack[1] = 0x01        pack[2] = (UInt8)(0xff&type)        pack[3] = (UInt8)(0xff&((length+2)/256))        pack[4] = (UInt8)(0xff&((length+2)%256))        var crc:Int = type.hashValue + pack[3].hashValue + pack[4].hashValue        for  i = 0; i < length; i++ {            pack[i+5] = (UInt8)(0xff&content[i])            crc += content[i]        }        pack[i+5] = (UInt8)(0xff&(crc/256))        pack[i+6] = (UInt8)(0xff&(crc%256))        return pack    }

调用

 let byte:[UInt8] = packData(1 content: [00112345678910] length: 10)        print(byte)

报错

在 pack[0] = (UInt8)(0xff&0xef) 这里报错 array index out of range
应该怎么修改代码

解决方案

你的pack只定义了,你添加数据要用append

 pack.append(UInt8(0xff&0xef))

解决方案二:
直接 pack[0] = 0x01 会不会报错?
如果不会,则说明是后面赋值部分的问题;按 Swift 的说明:访问数组元素直接索引数组下标,数组下标从0开始。

解决方案三:
对的 使用 append 就OK了

时间: 2024-12-28 04:29:53

swift byte数组添加元素时报错 索引超出范围的相关文章

索引超出数组界限,这句老是报错索引超出数组界限是咋回事啊????求大神解答

问题描述 索引超出数组界限,这句老是报错索引超出数组界限是咋回事啊????求大神解答 int rowIndex = ((DataTable)SQLiteDBHelper.BindingSource.DataSource).Rows.IndexOf(((DataTable)SQLiteDBHelper.BindingSource.DataSource).Select("Su编号=" + suid)[0]); 这句老是报错索引超出数组界限是咋回事啊????这句老是报错索引超出数组界限是咋回

关于总分站,泛域名解析,报错索引超出范围。必须为非负值并小于集合大小。

问题描述 关于总分站,泛域名解析,报错索引超出范围.必须为非负值并小于集合大小.如这样没错http://gl.zm777.com/如这样没错http://gsdfdsfl.zm777.com/这样就错了,是什么问题啊 解决方案 解决方案二:帮顶.

c#-C#其他信息: 索引超出了数组界限。

问题描述 C#其他信息: 索引超出了数组界限. private void button1_Click(object sender, EventArgs e) { string str = richTextBox1.Text; string[] lines = str.Split(Environment.NewLine.ToCharArray()); for (int i = 1; i < lines.Length; i++) { Console.WriteLine(lines[i]); stri

异常-索引超出了数组界限,求助啊

问题描述 索引超出了数组界限,求助啊 菜鸟学习些代码,实在是不知道怎么改,求助啊!! 运行出现如下问题: 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.IndexOutOfRangeException: 索引超出了数组界限. 源错误: 行 40: 行 41: // 初始化接口服务连接资源 行 42: client.initResources(); 行 43: Console.Writ

窥探Swift之数组安全索引与数组切片

在Swift中的数组和字典中下标是非常常见的,数组可以通过索引下标进行元素的查询,字典可以通过键下标来获取相应的值.在使用数组时,一个常见的致命错误就是数组越界.如果在你的应用程序中数组越界了,那么对不起,如果由着程序的性子的话是会崩溃的.为了防止崩溃呢,我们会对集合做一些安全的处理.比如对数组进行扩展,从而对数组的索引进行安全检查,保证数组的index在正常范围内.在Objective-C中也是经常对数组,字典等做一些处理操作. 今天的博客的主要内容是先对Objective-C中常用集合的安全

MySql Blob图片类型存储Bug解决:索引超出了数组界限错误

告别了一周多的网络,终于回归,突见群里,有网友提了以下问题: CYQ.Data框架测试:mysql数据库测试(保存blob类型的数据会出问题) ,针对mysql数据库做测试:发现更新blog字段,总是保存System.Byte[]   既然网友提出了问题,本地再试验一下: 先在本地装了个Mysql,又装了个navicat管理工具,又新建了个工程来测试: 简单的测试方法,就是放一个按钮,点击一下,读取远程图片,然后存到数据库,再读取出来显示到界面上. 管理工具随意建了个表"D1",弄了三

索引超出了数组界限。。。

问题描述 double[,]array=newdouble[n,k];inti;intj;for(j=1;j<=n;j++)for(i=1;i<3*k+1;i++){array[j-1,i-1]=double.Parse(dataGridView1.Rows[1].Cells[1].Value.ToString());}索引超出了数组界限. 解决方案 解决方案二:3*k+1当然超过了k解决方案三:double[,]array=newdouble[n,3*k+1];解决方案四:你的二维数组高只有

将分割的字符串绑到Grid上时,for each循环出现“索引超出数组界限”错误如何解决

问题描述 WinForm的假设我有段字符串stringstr="((,fnumber,>=,0514,,and;,fnumber,<,0519,)),;"; 以":"和","通过两次分割,将分割后的字符串显示在DataGridView中,显示效果如下:col0col1col2col3col4col5((fnumber>=0514andfnumber<0519))我自己写的分割代码如下:string[]row=strwher

DWGdirect error 索引超出了数组界限

问题描述 小弟刚下载了一个DWGdirect_NET_3_02可按下F5就报这个错,请各位大侠指教! 解决方案 解决方案二:错误提示是什么?解决方案三:就在cmd窗口里提示一个"DWGdirecterror索引超出了数组界限"然后迅速就没了,无法截图.在网上搜了一下好像是什么为空了.按F5没进断点就报错!我qq:530536333csdn有DWGdirect_NET_3_02的源码.解决方案四:代码中搜索一下错误内容.解决方案五:代码里面没报任何错误!解决方案六:你QQ多少..可以谈下