迅速-corebluetooth写入2个字节

时间:2018-08-15 20:10:18

标签: arrays swift byte core-bluetooth

我得到一个文本输入并将其写入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"

1 个答案:

答案 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, ...)