【问题标题】:Swift 3.0 convert Data to Array<UInt8>Swift 3.0 将数据转换为 Array<UInt8>
【发布时间】:2017-03-24 23:07:35
【问题描述】:

如何将 Data 转换为 UInt8 的数组?

func serialPort(_ serialPort: ORSSerialPort, didReceive data: Data) {
print("recieved:\(data)")
let arr: [UInt8] = Data(???)???
}

日志 已收到:70 字节

【问题讨论】:

    标签: ios swift3 uint8array


    【解决方案1】:

    在 Swift 3 中,Data 用作 UInt8Collection,因此您可以简单地使用 Array.init

    var received: [UInt8] = []
    
    func serialPort(_ serialPort: ORSSerialPort, didReceive data: Data) {
        print("received:\(data))")
        received = Array(data)
    }
    

    但是,Array.init(或Array.append(contentsOf:))复制了Data 的内容,因此当您需要处理大尺寸Data 时效率不高。

    【讨论】:

      【解决方案2】:

      知道了!

      var recived = [UInt8]()
      
      func serialPort(_ serialPort: ORSSerialPort, didReceive data: Data) {
              recived.removeAll()
              print("recieved:\(data))")
              recived.append(contentsOf: data)
      }
      

      【讨论】:

        【解决方案3】:

        使用withUnsafeBytes:

        let data = "ABCD".data(using: .ascii)!
        data.withUnsafeBytes {  (pointer: UnsafePointer<UInt8>) in
            //Prints 67 which is the ASCII value of 'C'
            print(pointer[2])
        }
        

        【讨论】:

          猜你喜欢
          • 2023-03-28
          • 2015-08-26
          • 1970-01-01
          • 2017-04-01
          • 2016-07-24
          • 1970-01-01
          • 2014-09-06
          • 1970-01-01
          • 2015-10-26
          相关资源
          最近更新 更多