iOS swift 如何拼接十六进制数据包 物联网

 我来答
enochwills
2018-07-20 · TA获得超过4793个赞
知道大有可为答主
回答量:2031
采纳率:96%
帮助的人:1648万
展开全部

数据包的部分最好直接用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类型,计算每个字节的值,然后再提交给程序接口进行调用;不建议这么做,因为要花很多时间调试,错一位就全错了,很麻烦。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式