2つのBLE特性値からデータを取得しようとしています。どちらも構造体を含んでいますが、私はこのデータを構造体としてアプリケーションにも保存したいと考えています。最初のBLE特性からのデータはすべてInt16で、私はそれを保存することができました。しかし問題は、第2の特性にInt8 & Int16の両方が含まれていることです。問題に対処するための解決策が見つかりません。Swift:データからInt16とInt8を抽出する
私のアプリケーションでは、両方の特性に対して2つの異なる構造を作成しました。最初の構造はこのように見えます、それはすべてInt16です。
struct FirstStruct {
let a1: Int16
...
let a6: Int16 }
第二は、そのようなものである2種類があります。
struct SecondStruct {
let b1: Int16
let b2: Int8
let b3: Int8
}
私が第一の特徴のためcharacteristic.valueからデータを取得する場合、私はこのようにそれを単に行うことができていますが:
data = characteristic.value
let firstData = data.withUnsafeBytes {(int16Ptr: UnsafePointer<Int16>)-> FirstStruct in
FirstStruct(a1: Int16(littleEndian: int16Ptr[0]),
...
a6: Int16(littleEndian: int16Ptr[5]))
}
しかし、私は2番目の特性のためにどのようにすることができますか? Int16 & Int8の両方があるため、同じ方法ではエラーが発生します。私は、すべての値をInt16として解釈し、次にInt8に変換しようとする可能性があると思いますか?しかし、これはおそらく悪い考えですか? 2番目の特性からデータを抽出し、それを私の希望する構造に入れる別の方法はありますか?
これはhttps://stackoverflow.com/questions/39390211/how-to-convert-nsdata-to-multiple-type-intsのヘルプですか? –