功能-使用Base64编解码

作者: 才寒 | 来源:发表于2016-07-21 16:33 被阅读4425次

iOS之后,NSData新增一个类别用于编解码NSData。

@interface NSData (NSDataBase64Encoding)

/* Create an NSData from a Base-64 encoded NSString using the given options. By default, returns nil when the input is not recognized as valid Base-64.
*/
- (nullable instancetype)initWithBase64EncodedString:(NSString *)base64String options:(NSDataBase64DecodingOptions)options NS_AVAILABLE(10_9, 7_0);

/* Create a Base-64 encoded NSString from the receiver's contents using the given options.
*/
- (NSString *)base64EncodedStringWithOptions:(NSDataBase64EncodingOptions)options NS_AVAILABLE(10_9, 7_0);

/* Create an NSData from a Base-64, UTF-8 encoded NSData. By default, returns nil when the input is not recognized as valid Base-64.
*/
- (nullable instancetype)initWithBase64EncodedData:(NSData *)base64Data options:(NSDataBase64DecodingOptions)options NS_AVAILABLE(10_9, 7_0);

/* Create a Base-64, UTF-8 encoded NSData from the receiver's contents using the given options.
*/
- (NSData *)base64EncodedDataWithOptions:(NSDataBase64EncodingOptions)options NS_AVAILABLE(10_9, 7_0);

@end

编解码NSString:

    // 字符串转Data
    NSString *str = @"encode string";
    
    // 字符串转成Data
    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];// 13 bytes
    
    // 编码Data
    NSData *encodeData = [data base64EncodedDataWithOptions:0];// 20 bytes
    
    // 解码Data
    NSData *decodeData = [[NSData alloc] initWithBase64EncodedData:encodeData options:0];// 13 bytes
    
    // Data转字符串
    NSString *decodeStr = [[NSString alloc] initWithData:decodeData encoding:NSUTF8StringEncoding];
    
    NSLog(@"%@",decodeStr);// encode string

以上的方法是通用方法,不过考虑到开发者使用NSData编解码NSString比较多,苹果提供了更直接的API编解码NSString:

    // 字符串转Data并且编码
    NSData *data = [[NSData alloc] initWithBase64EncodedString:@"encode string" options:0];
    
    // Data解码并且转字符串
    NSString *decodeStr = [data base64EncodedStringWithOptions:0];
    
    NSLog(@"%@",decodeStr);// encode string

编解码UIImage:

    UIImage *img = [UIImage imageNamed:@"image.jpg"];
    
    // 图片转Data
    NSData *data = UIImageJPEGRepresentation(img, 0.7);
    
    // 编码Data
    NSData *encodeData = [data base64EncodedDataWithOptions:0];
    
    // 解码Data
    NSData *decodeData = [[NSData alloc] initWithBase64EncodedData:encodeData options:0];
    
    // Data转图片
    UIImage *decodeImg = [UIImage imageWithData:decodeData];

总结:
编解码是只有NSData才能穿上脱下的隐身斗篷。

相关文章

  • 编码

    TextEncoder, TextDecoder(实验中的功能) base64 编解码 Base64编码作用:由于...

  • iOS7 base64编解码

    文档 使用 参考 使用Base64编解码NSData和NSString对象

  • 功能-使用Base64编解码

    iOS之后,NSData新增一个类别用于编解码NSData。 编解码NSString: 以上的方法是通用方法,不过...

  • Base64编码简单总结

    1 Base64编码原理 随着iOS7正式版推出,Apple增加了使用Base64编解码的支持。Base64编码之...

  • base64编解码介绍

    base64编解码介绍 使用   最近在工作中遇到了需要在url中传递参数的问题, 所以用到了base64编码. ...

  • C语言实现base64编解码

    base64编解码 工作中经常会用到base64编解码, 有些开源库中也有实现, 但是如果再去看他们的怎么用有时候...

  • js-base64.js实现base64编解码-解决中文乱码

    js-base64.js实现base64编解码-解决中文乱码 问题 在使用ajax提交后会出现:不进入succes...

  • base64

    Python内置的base64可以直接进行base64的编解码: 由于标准的Base64编码后可能出现字符+和/,...

  • 批处理下的Base64编解码

    文件版 命令:certutil /?,参考 批处理版Base64编码工具 BASE64编解码工具bse.exe 字...

  • Android-加密机制详解

    编解码 Base64编码算法 Base64编码算法是一种用64个字符(ABCDEFGHIJKLMNOPQRSTUV...

网友评论

  • 伊织随意写:// 字符串转Data并且编码
    NSData *data = [[NSData alloc] initWithBase64EncodedString:@"encode string" options:0];|

    这样获取到的data好像是空
  • 秋雨无痕:base64是一种编码,算不上加解密,看命名就可以了。encodeing decoding
    才寒:谢谢,当时刚好业务上用这个来实现编解码了,是我混淆了,文章我统一修改了
  • 今天的风儿略喧嚣啊:1.NSString *decodeStr = [data base64EncodedStringWithOptions:0]; 还是命名成:encodedStr比较合适
    2.NSLog(@"%@",decodeStr);// encode string 输出null 我判断是因为NSData *data = [[NSData alloc] initWithBase64EncodedString:@"encode string" options:0]; 传入的应该是base64EncodedString
    才寒:统一回复一下,[data base64EncodedStringWithOptions:0]是把编码成data的数据解码并转回string类型返回出来,我的理解是base64Encoded是修饰String这个词的(注意encode是encoded),简化理解这个方法就是stringWithOptions:,还有输出应该是encode string而不是null吧,我记得当时是从demo拷贝出来的,不过你确定是null的话回复我一下,我另外再尝试一次,之前的demo我弄丢了,最近都在弄qt,没怎么写iOS

本文标题:功能-使用Base64编解码

本文链接:https://www.haomeiwen.com/subject/brpbjttx.html