base64编码

一、Base64编码说明
  Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用'=',因此编码后输出的文本末尾可能会出现1或2个'='。

  为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换。编码表的大小为2^6=64,这也是Base64名称的由来。

从以上编码规则可以得知,通过Base64编码,原来的3个字节编码后将成为4个字节,即字节增加了33.3%,数据量相应变大。所以20M的数据通过Base64编码后大小大概为20M*133.3%=26.67M。

 

二、Base64编码表

码值字符   码值字符   码值字符   码值字符
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

 

三、例子

网络接来的str转换成byte数组,再解压。

 

+ (NSData *)decodeFromStr:(NSString *) str

{

    NSLog(@"Base64codeFunc");

    NSData * data = [[NSData alloc]  initWithBase64EncodedString:str options:0];

    

    Byte *byte = (Byte *)[data bytes];

    

//    for (int i=0 ; i<[data length]; i++) {

//        NSLog(@"byte = %d",byte[i]);

//    }

    

    NSData *dataCompressed = [[NSData alloc] initWithBytes:byte length:[data length]];

    

    NSData *dataUmCompressed = [LFCGzipUtillity uncompressZippedData:dataCompressed];

    

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



    return dataUmCompressed;

}

 

posted @ 2015-05-20 16:24  尘恍若梦  阅读(287)  评论(0编辑  收藏  举报