我该如何正确转换?我需要的值是0-1号字节,格式为uint16,单位为度。
print("derived : \(characteristic.value!)")
print(String(bytes: characteristic.value!, encoding: .utf16))
derived : 20 bytes
Optional("\0{Ͽ⌜ƀ")
答案 0 :(得分: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
,但是您可能希望某些数据位于其他位置。)