老谭笔记

Objective-C改良版的base64编码

base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,在google上随手一搜索,就可以找到好几个objective-c的版本,base64编码算法其实也是非常简单的,编码过程就是将3个字节共平均拆分成4个字节,这样,每个字节的值都落在0-63区间上了,然后分别对应A-Za-z0-9+/这64个字符,解码过程就是它的逆过程。

以下再简单的介绍一下这个转换的过程

源数据(3个字节): 10101101 10111010 01110110

拆分后(4个字节): 00101011 00011011 00101001 00110110

对应的十进制值为: 43 27 41 54

对应码表中的值: r b p 2

如果源数据不是3的倍数,则用零补齐,转换后的编码用=代码,所以就会看到有base64编码在末尾有1个或2个的=符号。

该过程比较简单,就不累述了,我实现的objective-C版本主要增强了容错能力、对较大的数据编码中的性能问题、以及直接对文件进行base64编码成文本文件等功能。

附件中的THUtility主要的方法有以下内心个方法:

1.对NSData的编码成NSString,及逆过程

1
2
+ (NSString *)encodeBase64WithData:(NSData *)objData;
+ (NSData *)decodeBase64WithString:(NSString *)string;

2.直接对一个文件进行编码或解码

1
2
+ (NSString *)encodeBase64AtURL:(NSURL *)fileUrl;
+ (NSData *)decodeBase64AtURL:(NSURL *)fileUrl;

3.直接将文件编码或解码到另一个文件

1
2
+ (BOOL)encodeBase64AtURL:(NSURL *)srcURL toURL:(NSURL *)dstURL;
+ (BOOL)decodeBase64AtURL:(NSURL *)srcURL toURL:(NSURL *)dstURL;

本站下载:THUtility