将 CBCharacteristic 值转换为字符串

Posted

技术标签:

【中文标题】将 CBCharacteristic 值转换为字符串【英文标题】:Convert CBCharacteristic value to string 【发布时间】:2017-01-24 18:09:55 【问题描述】:

我有应用程序与 BLE 设备一起使用。我有特征值,但我无法将其转换为字符串。 例如,

value = <aa640400 0000001e 0f>

如何转成字符串?

【问题讨论】:

【参考方案1】:
let dd = getCharacteristic.value!;

print(String(data: dd, encoding: String.Encoding.ascii)!);

【讨论】:

请在您的代码中添加说明。代码转储经常被否决,甚至可能被删除。 让值 = [UInt8](characteristic.value!)【参考方案2】:

我使用了上面桑迪的答案并将其浓缩为

let data = (characteristic.value)!    
let nsdataStr = NSData.init(data: (characteristic.value)!)
print("Raw: \(nsdaraStr)")

我想要做的就是从 BLE 外围设备(在本例中为 HR 监视器)获取原始值(十六进制)。 上面的输出给了我:

// This is the Decimal HRArray:[22, 64, 90, 3] 
Raw: length = 4, bytes = 0x16404e03

下面这段代码基本上只是去掉了空格

let str = nsdataStr.description.trimmingCharacters(in:charSet).replacingOccurrences(of: " ", with: "")

制作

Raw: length=4, bytes=0x16404e03

我不需要。

【讨论】:

请改用***.com/questions/39075043/…。否则,这将在以后的版本中被淘汰(ios13更改了数据描述:***.com/questions/57839723/…)。【参考方案3】:

按照以下代码:

let data = (characteristic?.value)!

print(data) //-> It will be of type Data we need to convert Data to String

let charSet = CharacterSet(charactersIn: "<>")

let nsdataStr = NSData.init(data: (characteristic?.value)!)

let str = nsdataStr.description.trimmingCharacters(in:charSet).replacingOccurrences(of: " ", with: "")

print(str) // you will get String or Hex value (if its Hex need one more conversion)

【讨论】:

以上是关于将 CBCharacteristic 值转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章

订阅来自 CBCharacteristic 的通知不起作用

使用泛型和简单地将字符串值转换为枚举时将字符串值转换为枚举时的混淆

使用 Freemarker 将字符串转换为布尔值

将 ASCII 值数组转换为一个字符串

将字符 lat/lng 值转换为数字

TypeScript:将布尔值转换为字符串值