Ich versuche, Daten aus zwei BLE-Eigenschaften Werte abzurufen. Beide enthalten Strukturen, und ich möchte diese Daten auch als Strukturen in meiner Anwendung speichern. Daten vom ersten BLE-Merkmal sind alle Int16, ich konnte es speichern. Aber das Problem ist, dass das zweite Merkmal Int8 & Int16 enthält, und ich kann keine Lösung finden, um damit umzugehen.Swift: Int16 & Int8 aus Daten extrahieren
In meiner Anwendung habe ich zwei verschiedene Strukturen für beide Merkmale erstellt. Die erste Struktur sieht so aus, es ist alles Int16.
struct FirstStruct {
let a1: Int16
...
let a6: Int16 }
Das zweite ist, wie das, hat zwei Arten:
struct SecondStruct {
let b1: Int16
let b2: Int8
let b3: Int8
}
Wenn ich Daten von characteristic.value für das erste Merkmal, ich bin in der Lage es so einfach tun :
data = characteristic.value
let firstData = data.withUnsafeBytes {(int16Ptr: UnsafePointer<Int16>)-> FirstStruct in
FirstStruct(a1: Int16(littleEndian: int16Ptr[0]),
...
a6: Int16(littleEndian: int16Ptr[5]))
}
Aber wie kann ich es für das 2. Merkmal tun? Derselbe Weg funktioniert nicht, weil er sowohl Int16 & Int8 als auch Fehler enthält. Ich könnte versuchen, alle Werte als Int16 zu interpretieren und dann zu Int8 zu konvertieren? Aber das ist wahrscheinlich eine schlechte Idee? Gibt es eine andere Möglichkeit, die Daten aus dem zweiten Merkmal zu extrahieren und in meine gewünschte Struktur zu bringen?
Hilft dies https://stackoverflow.com/questions/39390211/how-to-convert-nsdata-to-multiple-type-ints? –