【发布时间】: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
如何将 Data 转换为 UInt8 的数组?
func serialPort(_ serialPort: ORSSerialPort, didReceive data: Data) {
print("recieved:\(data)")
let arr: [UInt8] = Data(???)???
}
日志 已收到:70 字节
【问题讨论】:
标签: ios swift3 uint8array
在 Swift 3 中,Data 用作 UInt8 的 Collection,因此您可以简单地使用 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 时效率不高。
【讨论】:
知道了!
var recived = [UInt8]()
func serialPort(_ serialPort: ORSSerialPort, didReceive data: Data) {
recived.removeAll()
print("recieved:\(data))")
recived.append(contentsOf: data)
}
【讨论】:
let data = "ABCD".data(using: .ascii)!
data.withUnsafeBytes { (pointer: UnsafePointer<UInt8>) in
//Prints 67 which is the ASCII value of 'C'
print(pointer[2])
}
【讨论】: