【发布时间】:2019-05-30 20:21:12
【问题描述】:
如何正确转换它?我需要的值是字节数 0-1,格式为 uint16,单位为度。
print("derived : \(characteristic.value!)")
print(String(bytes: characteristic.value!, encoding: .utf16))
derived : 20 bytes
Optional("\0{Ͽ⌜ƀ")
【问题讨论】:
如何正确转换它?我需要的值是字节数 0-1,格式为 uint16,单位为度。
print("derived : \(characteristic.value!)")
print(String(bytes: characteristic.value!, encoding: .utf16))
derived : 20 bytes
Optional("\0{Ͽ⌜ƀ")
【问题讨论】:
您只需要将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,但您可能需要其他位置的一些数据。)
【讨论】:
characteristic.value 将0 保持在字节数0-1。