Как конвертировать байтовую позицию в swift - PullRequest
0 голосов
/ 30 мая 2019

Как бы я преобразовал это правильно? значение, которое мне нужно, это номер байта 0-1, имеет формат uint16 и его единицы измерения в градусах.

print("derived : \(characteristic.value!)")
print(String(bytes: characteristic.value!, encoding: .utf16))

derived : 20 bytes
Optional("\0{Ͽ⌜ƀ")

1 Ответ

0 голосов
/ 31 мая 2019

Вам просто нужно получить первые два байта Data как UInt16.

var result: UInt16 = 0
_ = withUnsafeMutableBytes(of: &result) {characteristic.value!.copyBytes(to: $0, from: 0...1)}
print("\(result) degrees")

Предполагается, что ваш формат uint16 относится к Little-Endian, а также к iOS, что чаще встречается в характеристиках BLE.

(Когда вы получаете первое значение в Data, from: 0...1 не требуется, но вы можете захотеть, чтобы некоторые данные были в другой позиции.)

...