Swift获取decimal.value的特性

我尝试使用Swift 3在Xcode中创build一个小型的iOS应用程序。我尝试连接到一个BLE设备,然后读取电池电量。

我得到这个回应:

… UUID =电池电量,属性= 0x12,值= <30​​> …

然后我尝试将HEX 30转换为十进制数字48.但是我不知道如何。

我试过这个:

print(String(bytes: characteristic.value!, encoding: String.Encoding.utf8)) print(Int(strtoul(str, nil, 16))) let dataBLE = String(data: characteristic.value!, encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) print(dataBLE) 

但是这些工作都没有。 我怎样才能从hex转换为十进制的值来自characteristic.value

org.bluetooth.characteristic.battery_level(0x2A19)的值似乎是一个单一的uint8 (Swift中的UInt8 )。 而characteristic.value!的结果characteristic.value!Data ,这是一个UInt8的集合,在你的情况下,它只包含一个UInt8值。

尝试这个:

 print(characteristic.value![0]) 

但是,当您需要在应用程序中使用其他各种特性(对于使用BLE的应用程序来说这是一个非常常见的情况),leanne评论中显示的链接文章将非常有用。

这应该工作:

 let data = characteristic.value var byte:UInt8 = 0 data.copyBytes(to: &byte, count: 1) let valueInInt = Int(byte) print(valueInInt)