iOS swift 如何拼接十六进制数据包 物联网
1个回答
展开全部
数据包的部分最好直接用C语言(或者OC)封装一个Struct,然后在Swift内引用,因为涉及到序列化的问题,在Swift里面直接写其实是有一些问题的。
关于从C语言封装后Swift调用的范例,在Github上搜索RockfordWei/CSwift。这种写法是最理想的,我相信你的物联网端的数据包就是用C写的结构体,应该可以直接引用。
如果非要用纯Swift写,还有两个选择:
如果碰巧走运(假定都是每4个字节一组对齐),可以用多元组(Tuple)直接写。比如下面的例子:
let datapack = (firstMember:Int64(100), secondMember:Int32(10))
这个datapack是可以与Struct兼容的,但是数据包如果不是以4个字节或者8个字节分组的就不兼容;如果多元组中包括了如字符串之类的非简单类型,也是不兼容。
最后一种方法虽然笨,但是的确是纯Swift的写法,就是用Foundation.Data类型,计算每个字节的值,然后再提交给程序接口进行调用;不建议这么做,因为要花很多时间调试,错一位就全错了,很麻烦。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询