J'essaie de récupérer des données à partir de deux valeurs de caractéristiques BLE. Ils contiennent tous les deux des structures et je souhaite également enregistrer ces données en tant que structures dans mon application. Les données de la première caractéristique BLE sont toutes Int16, j'ai pu le sauvegarder. Mais le problème est que la deuxième caractéristique contient à la fois Int8 & Int16, et je ne peux pas trouver une solution pour y faire face.Swift: Extraire Int16 & Int8 à partir des données
Dans mon application, j'ai créé deux structures différentes pour les deux caractéristiques. La première structure ressemble à ceci, tout est Int16.
struct FirstStruct {
let a1: Int16
...
let a6: Int16 }
Le second est comme ça, a 2 types:
struct SecondStruct {
let b1: Int16
let b2: Int8
let b3: Int8
}
Quand je reçois des données de characteristic.value pour la première caractéristique, je suis capable de faire tout simplement comme ça :
data = characteristic.value
let firstData = data.withUnsafeBytes {(int16Ptr: UnsafePointer<Int16>)-> FirstStruct in
FirstStruct(a1: Int16(littleEndian: int16Ptr[0]),
...
a6: Int16(littleEndian: int16Ptr[5]))
}
Mais comment puis-je le faire pour la 2ème caractéristique? De la même manière ne fonctionne pas, car il a Int16 & Int8, entraîne une erreur. Je suppose, je pourrais essayer d'interpréter toutes les valeurs comme Int16 et ensuite convertir en Int8? Mais c'est probablement une mauvaise idée? Existe-t-il un autre moyen d'extraire les données de la deuxième caractéristique et de les mettre dans ma structure désirée?
Est-ce que cela aide https://stackoverflow.com/questions/39390211/how-to-convert-nsdata-to-multiple-type-ints? –