在不知道编码类型的情况下将 NSData 转换为 NSString
Posted
技术标签:
【中文标题】在不知道编码类型的情况下将 NSData 转换为 NSString【英文标题】:Converting NSData to NSString without knowing the encoding type 【发布时间】:2016-06-14 14:52:03 【问题描述】:免责声明:
this 上一个问题不包含有效答案。 this other 确实包含我用来转换它的技术,但没有回答我的问题。问题:
我正在从与 string 对应的 BLE 特征中读取一些 NSData,但是我不知道它使用什么编码格式。
这是来自 Xcode 上的调试器的视图:
如何将其转换为字符串?我想提取这个值: “”
我尝试了以下没有任何意义的转换。但是 XCode 似乎可以完成这项工作。 为什么?
NSData * valueAsData = characteristic.value.mutableCopy;
NSString* newStr = [[NSString alloc] initWithData:characteristic.value encoding:NSUTF8StringEncoding];
NSString* newStr2 = [[NSString alloc] initWithData:characteristic.value encoding:NSASCIIStringEncoding];
【问题讨论】:
你确定它是一个 NSString,而且只是一个字符串(例如可以是struct
)?您是否正在尝试进行一些逆向工程?如果是,并且您正在尝试确定 char 的字符串编码,那么您可能必须尝试所有可用的编码。请注意,有一些方法可以将字符串“”转换为相应的 NSData,因此您不必重做整个过程即可到达该行。或者你想得到一个 newStr = @""" ?
xcode 正在显示字节值。你可以对 NSData bytes
做同样的事情
【参考方案1】:
获取与特征关联的描述符。其中之一应该是CBUUIDCharacteristicFormatString
。这将指示presentation format,它将指示特征值的数据类型。
【讨论】:
以上是关于在不知道编码类型的情况下将 NSData 转换为 NSString的主要内容,如果未能解决你的问题,请参考以下文章
有啥方法可以在不将 CIImage 转换为 UIImage 或 CGImage 的情况下将 CIImage 转换为 NSData?
处理 requestAttributionDetailsWithBlock 和 NSDictionary。在不知道它到底是啥的情况下将任何类型转换为 NSString
PHP:在不知道原始字符集的情况下将任何字符串转换为 UTF-8,或者至少尝试一下