一、什么是NSData和NSString
NSData是Foundation框架中的一个类,是一种二进制数据类型。它可以包含一个文件的内容,或其他没有特定的表现形式的数据。而NSString则是Foundation框架中的一个字符串类型,用于表示Unicode文本。
二、NSData转NSString方法
我们常用的NSData转NSString有两种方法,分别是使用initWithData:encoding:
方法和使用base64 encoding的方法。
三、使用initWithData:encoding:
方法
使用该方法可以利用NSData生成NSString,具体实现代码如下:
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"字符串为%@",string);
简单说明一下,将要转换的字符串转换为NSData类型,然后用该方法进行转换即可。如果需要指定编码格式,可以在encoding参数中传入其他编码。
四、使用base64 encoding的方法
base64 encoding是一种用于特定类型数据传输的编码方式,使用该方法进行NSString和NSData的转换非常简单,具体实现代码如下:
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
NSString *base64String = [data base64EncodedStringWithOptions:kNilOptions];
NSLog(@"字符串为%@",base64String);
NSData *data2 = [[NSData alloc] initWithBase64EncodedString:base64String options:NSDataBase64DecodingIgnoreUnknownCharacters];
NSString *string2 = [[NSString alloc] initWithData:data2 encoding:NSUTF8StringEncoding];
NSLog(@"字符串为%@",string2);
对于将NSString转为NSData,这里使用的是NSData的base64EncodedStringWithOptions:
方法。在这个方法中,我们将传入的编码格式进行了转变,最终得到了一个base64编码的结果。而将NSData转为NSString,则需要使用NSData的initWithBase64EncodedString:options:
方法进行解码。
五、NSString转NSData方法
使用NSString转换为NSData也有两种方法,分别是使用NSString的方法和base64 decoding的方法。
六、使用NSString的方法
NSString和NSData之间的转换,使用- (NSData*)dataUsingEncoding:(NSStringEncoding)encoding;
方法进行转换即可,具体实现代码如下:
NSString *string = @"abcdefg";
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"NSData为%@",data);
该方法中,我们将NSString类型的字符串转为NSData,其中的encoding参数指定了字符串的编码格式。
七、使用base64 decoding的方法
使用base64 decoding方法将NSString转为NSData同样也非常简单,只需要在NSData中使用initWithBase64EncodedString:options:
方法进行转换即可,具体实现代码如下:
NSString *base64String = @"YWJjZGVmZw==";
NSData *data = [[NSData alloc] initWithBase64EncodedString:base64String options:NSDataBase64DecodingIgnoreUnknownCharacters];
NSLog(@"NSData为%@",data);
NSString *newString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"新字符串为%@",newString);
以上代码中,我们将base64String进行解码,得到了一个NSData类型的数据。如果需要转为NSString,则使用NSData的initWithData:encoding:
方法进行转换即可。
结论
通过上述的方法,我们就可以将NSData和NSString类型进行互相转换。在使用时,需要根据场景进行选择,使用initWithData:encoding:
方法转换字符编码或使用base64 encoding进行加密解密,具体根据业务需求选择。