代码之家  ›  专栏  ›  技术社区  ›  Mike Nathas

将数组变量转换为Swift中的数据

  •  0
  • Mike Nathas  · 技术社区  · 6 年前

    我想(至少我认为)将UInt8值数组转换为数据。

    使用数据(字节:变量)在这里不起作用。

    以下是变量的类型:

    po type(of: obj.variable)   
    (Swift.UInt8, Swift.UInt8, Swift.UInt8, Swift.UInt8)
    

    1 回复  |  直到 6 年前
        1
  •  1
  •   Palle    6 年前

    类型 obj UInt8

    您可以按如下方式访问元组的元素:

    let obj: (UInt8, UInt8, UInt8, UInt8) = (2, 4, 6, 8) // let obj be a tuple of four UInt8 values
    obj.0  // 2
    obj.1  // 4
    

    作为 Data 实际上是 Collection 字节,它可以从 单位8 价值观。

    所以最简单的解决方法就是创建一个 Array 数据

    let data = Data([obj.0, obj.1, obj.2, obj.3])
    

    但是,这并不是最通用的解决方案,仅在元组仅包含 单位8

    更一般的方法是将元组转换为 UnsafePointer 首先创建一个 数据

    let data = withUnsafePointer(to: &obj) { ptr -> Data in
        return Data(bytes: ptr, count: MemoryLayout.size(ofValue: obj)
    }
    
    推荐文章