关于objective c:将NSData转换为NSString并再次转换为NSData?

Convert NSData to NSString and convert again to NSData?

我有一个代码,它在我的iOS中获取一个文件,将其转换为nsdata并将其转换为nsstring:

1
2
3
4
5
6
7
8
9
NSFileManager *filemgr;

filemgr = [NSFileManager defaultManager];

NSData *files = [filemgr contentsAtPath:databasePath];

NSData *databuffer = [filemgr contentsAtPath:databasePath];

NSString *string = [NSString stringWithFormat:@"%@",databuffer];

我只想知道是否有可能将此nsstring转换为nsdata并使用nsfilemanager通过nsdata返回,然后以原始格式重新保存文件?


stringWithFormat是调用nsdata的description方法的昂贵方法。这只会产生十六进制转储。而且,我们被告知,苹果公司不保证description方法产生的格式在将来不会改变,因此它只能用于诊断目的。

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


要将NSData转换为NSString使用:

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

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

NSString转换为NSData

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

假设数据编码应该是NSUTF8StringEncoding(很好)。

您需要做一些研究/研究nsdata和nsstring之间的区别。