Swift 3.0将数据转换为数组<UInt8>

Ale*_*ics 4 ios swift3 uint8array

如何将数据转换为UInt8数组?

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

收到的日志:70个字节

OOP*_*Per 16

在斯威夫特3,Data工程作为Collection的UInt8,所以你可以简单地使用Array.init.

var received: [UInt8] = []

func serialPort(_ serialPort: ORSSerialPort, didReceive data: Data) {
    print("received:\(data))")
    received = Array(data)
}
Run Code Online (Sandbox Code Playgroud)

但是,Array.init(或Array.append(contentsOf:))复制了内容Data,因此当你需要使用大量的内容时效率不高Data.


Ale*_*ics 0

知道了!

var recived = [UInt8]()

func serialPort(_ serialPort: ORSSerialPort, didReceive data: Data) {
        recived.removeAll()
        print("recieved:\(data))")
        recived.append(contentsOf: data)
}
Run Code Online (Sandbox Code Playgroud)