当前位置:   article > 正文

Swift Data类型数据的处理_swift data数据基本操作

swift data数据基本操作

引言

在重构公司项目的过程中发现 swift 开发自定义协议往往需要使用NSData转换后才能使用,考虑到重构的目标是尽量不使用oc的数据类型特别研究了一下。

构造数据包

在这里我们使用Swift的指针类型进行数据包的转换具体代码如下:

  1. func getPacket(pointer:UnsafeRawPointer,data:Data!,size:Int) -> Data? {
  2. //根据结构体构造Data数据
  3. var ahpack:Data = Data(bytes: pointer, count:size)
  4. //添加附加数据
  5. if data != nil{
  6. ahpack.append(data!)
  7. }
  8. return ahpack
  9. }
  10. //自定义协议包头
  11. struct Prototype {
  12. let param1:UInt16
  13. let param2:UInt16
  14. let param3:UInt16
  15. let param4:UInt16
  16. }
  17. //调用
  18. //构造包结构体
  19. var packetStruct = Prototype(param1: 1,param2: 2,param3: 3,param4: 4)
  20. //生成协议包
  21. print(getPacket(pointer: &packetStruct, data: nil, size: MemoryLayout.size(ofValue: packetStruct)))

解析数据包

  1. //data转换结构体指针
  2. func getStruct(pointer:UnsafePointer<UInt8>)->UnsafePointer<Prototype>.Pointee{
  3. unsafeBitCast(pointer, to: UnsafePointer<Prototype>.self).pointee
  4. }
  5. //使用
  6. let structs = getStruct(pointer: &data)
  7. print("param1:\(structs.param1)\nparam2:\(structs.param2)\nparam3:\(structs.param3)\nparam4:\(structs.param4)")

效果如图

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/815029
推荐阅读
相关标签
  

闽ICP备14008679号