【问题标题】:Convert Data? containing bytes to Int in swift 5转换数据?在 swift 5 中包含字节到 Int
【发布时间】:2019-04-10 10:38:57
【问题描述】:

我从 IoS 上的 ble 外围设备的特性中读取了一些数据,当我尝试打印它们时,它只显示 2 个字节。看类型是可选的数据类型(Data?)。

我的问题是,要将该值转换为可读整数,swift 5 中最快的做法是什么?

如果我尝试打印characteristic.value,它只会显示“2 个字节”。 characteristic.value 是可选的数据类型。


switch characteristic.uuid:

   case accelerometerUUID:
      if characteristic.value != nil {
            let accelValue = ???
            print(accelValue)
      }

非常感谢!

【问题讨论】:

  • 视情况而定。你能做print(characteristic.value as NSData)。根据结果​​及其背后的价值,您需要将该字符串输出转换为带有Int(String(data: characteristic.value, encoding: .utf8))stackoverflow.com/questions/38023838/… 的字符串

标签: swift type-conversion


【解决方案1】:

试试这个:

guard let value = characteristic.value else { return } // This makes it non-optional
let stringInt = String(data: value, encoding: .utf8)
let yourNumber = Int(stringInt)

这比下面的例子安全得多。应该首选上面那个。

一行代码:

let yourNumber = Int(String(data: characteristic.value!, encoding: .utf8))

这是不安全的,因为您正在解包一个可能是可选的值,这可能会导致崩溃。

希望这会有所帮助!

【讨论】:

  • 感谢您的回答。我现在试过了,我遇到了两个问题;第一个是它不断打印“2 个字节”,第二个是我需要对 stringInt 和 yourNumber 值都使用 guard
猜你喜欢
  • 2019-10-19
  • 2021-10-24
  • 2019-11-19
  • 1970-01-01
  • 2018-07-04
  • 1970-01-01
  • 2020-09-11
  • 2021-09-14
  • 1970-01-01
相关资源
最近更新 更多