【问题标题】:How to convert CBCharacteristic.value to NSString in Objective C如何在 Objective C 中将 CBCharacteristic.value 转换为 NSString
【发布时间】:2018-04-06 01:03:24
【问题描述】:

我无法将 CBCharacteristic 的 NSData 类型的 value 属性转换为 NSString。我尝试了通常的 initWithData:encoding: NSString 方法,如下所示。但它返回零。

NSString *str = [[NSString alloc] initWithData:characteristic.value encoding:NSUTF8StringEncoding];
NSLog(@"%@", str);

当我直接对值执行 NSLog 时,我能够在控制台上看到字符串值。

NSLog(@"characteristic.value: %@", characteristic.value);

谁能给出关于如何从characteristic.value中获取字符串值的任何想法?

【问题讨论】:

  • 并非所有二进制数据 (NSData) 在 UTF8 字符串中都有意义。如果你转换 [[NSString alloc] initWithData:UIImagePNGRepresentation(someUIImage) encoding:NSUTF8StringEncoding];,你可能会得到 nil。
  • @Larme:是的,正确的。但在这种情况下,它是一个已知的特征,它有一个十六进制的 no 作为字符串(uuid 格式)。当我打印数据时,我能够看到它的价值。 NSLog(@"characteristic.value: %@", characteristic.value);
  • 然后向我们展示您想要的价值和结果。
  • 它打印。值:。这是分配给特征的默认值。我已经在我的代码中硬连线了这个值。如果特征具有这个值,那么我将不得不进行一些计算并将其值更改为其他值。
  • 如果您只是想检查它是否相等,您可以使用stackoverflow.com/questions/7317860/…@"11122334 45566778 899aabbc cddeeff0 00" as NSString 转换为 NSData 并执行isEqual:

标签: ios objective-c bluetooth-lowenergy core-bluetooth cbcentralmanager


【解决方案1】:
  • 您需要知道 NSData 是什么意思。可以是 String、struct、uint32 等。请参见此处:core-bluetooth-get-all-features-description

  • BLevel 是否代表电池电量?您需要进行逆向工程或阅读文档(BLE 文档,如果它是“已知”文档,或设备文档)

【讨论】:

    猜你喜欢
    • 2018-04-27
    • 2011-09-19
    • 2014-10-25
    • 2011-09-18
    • 2020-10-26
    • 2016-12-17
    • 2010-12-22
    • 2010-12-19
    • 2012-10-06
    相关资源
    最近更新 更多