Swift 3.0 конвертирует данные в массив<UInt8>
Как преобразовать данные в массив UInt8?
func serialPort(_ serialPort: ORSSerialPort, didReceive data: Data) {
print("recieved:\(data)")
let arr: [UInt8] = Data(???)???
}
получено:70 байт
3 ответа
В Свифте 3 Data
работает как Collection
из UInt8
так что вы можете просто использовать 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
,
Использовать с UnsafeBytes:
let data = "ABCD".data(using: .ascii)!
data.withUnsafeBytes { (pointer: UnsafePointer<UInt8>) in
//Prints 67 which is the ASCII value of 'C'
print(pointer[2])
}
Понял!
var recived = [UInt8]()
func serialPort(_ serialPort: ORSSerialPort, didReceive data: Data) {
recived.removeAll()
print("recieved:\(data))")
recived.append(contentsOf: data)
}