我得到一个文本输入并将其写入ble设备。我没有1字节数据的问题,但是我无法将文本输入值转换为2字节并发送。
如何将3400之类的值转换为UInt8数组的2个字节,对于255以下的值该怎么办?
对于1个字节,我使用:
let myInt = Int(textField.text)
let value: [UInt8] = [UInt8(myInt)]
self.bluetoothManager.writeValue(data: Data(bytes: value), forCharacteristic: myChar!, type: .withResponse)
我尝试过这样的转换,但无法使用.writeValue发送String:
https://stackoverflow.com/a/36967037/4704055
let d1 = 21
let b1 = String(d1, radix: 2)
print(b1) // "10101"
答案 0 :(得分:0)
您可能希望将字符串转换为16位整数,然后 将整数转换为数据(比较round trip Swift number types to/from Data),最后将数据写入设备:
guard var value = Int16(textField.text) else {
// ... invalid number ...
}
// value = value.bigEndian (if big-endian is expected by the device)
let data = Data(buffer: UnsafeBufferPointer(start: &value, count: 1))
self.bluetoothManager.writeValue(data: data, ...)