将 NSData 转换为 NSString 并再次转换为 NSData?
Posted
技术标签:
【中文标题】将 NSData 转换为 NSString 并再次转换为 NSData?【英文标题】:Convert NSData to NSString and convert again to NSData? 【发布时间】:2014-09-08 11:22:53 【问题描述】:我有这段代码在我的 ios 中获取一个文件,将其转换为 NSData 并将其转换为 NSString:
NSFileManager *filemgr;
filemgr = [NSFileManager defaultManager];
NSData *files = [filemgr contentsAtPath:databasePath];
NSData *databuffer = [filemgr contentsAtPath:databasePath];
NSString *string = [NSString stringWithFormat:@"%@",databuffer];
我只想知道是否有可能将此 NSString 转换为 NSData 并使用 NSFileManager 通过 NSData 将文件重新保存为原始格式?
【问题讨论】:
***.com/questions/6411965/… 试试。 你需要解释想要一个 NSString 表示的目的。 【参考方案1】:stringWithFormat
是调用 NSData 的 description
方法的昂贵方式。这只会产生一个十六进制转储。而且,我们被告知,Apple 不保证 description
方法生成的格式将来不会更改,因此它只能用于诊断目的。
如果您想将 NSData 转换为字符串格式以便可以将其作为字符串传输,您应该使用 Base64 编码。如果 NSData 实际上是字符信息,则应使用适当的字符串编码将其转换为 NSString。
【讨论】:
【参考方案2】:要将NSData
转换为NSString
,请使用:
NSString *string = [[NSString alloc] initWithData:data encoding: NSUTF8StringEncoding];`
假设数据使用NSUTF8StringEncoding
编码(一个不错的选择)。
要将NSString
转换为NSData
:
NSData *data = [string dataUsingEncoding: NSUTF8StringEncoding];`
假设数据编码应该是NSUTF8StringEncoding
(一个不错的选择)。
你需要做一些研究/研究 NSData 和 NSString 之间的区别。
【讨论】:
以上是关于将 NSData 转换为 NSString 并再次转换为 NSData?的主要内容,如果未能解决你的问题,请参考以下文章
使用正确的类型将 NSValue 转换为 NSData 并再次返回