将NSData转换为NSString并再次转换为NSData?

时间:2014-09-08 11:22:53

标签: objective-c nsstring nsdata nsfilemanager

我有这个代码在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返回并以原始格式重新保存文件?

2 个答案:

答案 0 :(得分:1)

stringWithFormat是一种调用NSData的description方法的昂贵方法。这只会产生一个十六进制转储。并且,我们被告知,Apple不保证description方法生成将来不会更改的格式,因此它只应用于诊断目的。

如果要将NSData转换为字符串格式,以便可以作为字符串传输,则应使用Base64编码。如果NSData实际上是字符信息,则应使用适当的字符串编码将其转换为NSString。

答案 1 :(得分:0)

要将NSData转换为NSString使用:

NSString *string = [[NSString alloc] initWithData:data encoding: NSUTF8StringEncoding];`

假设数据是用NSUTF8StringEncoding编码的(很好的选择)。

NSString转换为NSData

NSData *data = [string dataUsingEncoding: NSUTF8StringEncoding];`

假设数据编码应为NSUTF8StringEncoding(一个不错的选择)。

你需要做一些研究/研究NSData和NSString之间的区别。