iOS中NSData、NSString、NSDate和Base64转码

一、NSDate与NSString转换,NSDateFormatter是重点。

// 日期格式化类,资源消耗大,使用时最好写成单例。
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss zzz"];

1、NSDate转NSString

NSString *dateString = [formatter stringFromDate:date];

2、NSString转NSDate

NSDate *date = [formatter dateFromString:@"2017-02-27 16:44:30 100"];

二、NSData与NSString转换,NSData是重点。

严格意义上字符串也是一种二进制数据,只是表现形式不一样。
1、NSString转NSData

NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];

2、NSData转NSString

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

3、图片数据image转NSData

UIImage *image = [UIImage imageNamed:@""];

NSData *data = UIImagePNGRepresentation(image);
data = UIImageJPEGRepresentation(image, 0.1);  //图片体积缩小比例

或者
NSData *data = [[NSData alloc] initWithContentsOfFile:@""];
data = [[NSData alloc] initWithContentsOfURL:URL]; //卡当前线程

三、Base64加密,又称转码。

iOS中NSData、NSString、NSDate和Base64转码_第1张图片
Base64加密(转码)情况

NSData是转码的桥梁。转码后的数据分为Base64形式的NSDataNSString字符串。其实Base64也就这样:每3字节转为4字节,只是是数据形式是NSData和NSString。

1、普通字符串加密成Base64形式的NSData、NSString。

NSData *data = [@"string" dataUsingEncoding:NSUTF8StringEncoding];

// 加密成Base64形式的NSData
NSData *base64Data = [data base64EncodedDataWithOptions:NSDataBase64EncodingEndLineWithLineFeed];
// 加密成Base64形式的NSString
NSString *base64String = [data base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];

2、Base64形式的NSData解密成Base64形式的字符串、普通字符串。

// Base64形式的NSData解密成Base64形式的字符串
NSString *base64String = [base64Data base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];

// Base64形式的NSData解密成普通字符串
NSData *data = [[NSData alloc] initWithBase64EncodedData:base64Data options:NSDataBase64DecodingIgnoreUnknownCharacters];
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

3、把图片加密为Base64形式的字符串/NSData。

UIImage *image = [UIImage imageNamed:@""];
NSData *data = UIImagePNGRepresentation(image); // 图片数据

// data加密成Base64形式的字符串。
NSString *base64String = [data base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed]; 

// data加密成Base64形式的NSData
NSData *base64Data = [data base64EncodedDataWithOptions:NSDataBase64EncodingEndLineWithLineFeed]; 

4、把一段Base64形式的字符串/NSData解密为图片。

// Base64形式的字符串为data
NSData *data = [[NSData alloc] initWithBase64EncodedString:base64String options:NSDataBase64DecodingIgnoreUnknownCharacters];

// Base64形式的NSData转换为data
data = [[NSData alloc] initWithBase64EncodedData:base64Data options:NSDataBase64DecodingIgnoreUnknownCharacters];

// 图片数据
UIImage *image = [[UIImage alloc] initWithData:data];

你可能感兴趣的:(iOS中NSData、NSString、NSDate和Base64转码)