您的位置:首页 > 移动开发 > Objective-C

base64 encoder/decoder for objective-c编码及解码

2010-05-06 15:21 579 查看
base64是广为使用的一种编码及解码方式, 通常用于网络传输和邮件传输中,使用base64可以将标点符号以及多字节文字等特殊字符编码以便传输,以下是base64 编码解码的objective-c代码, 可以用于desktop和iphone程序当中

头文件
#include

extern size_t EstimateBas64EncodedDataSize(size_t inDataSize);
extern size_t EstimateBas64DecodedDataSize(size_t inDataSize);

extern bool Base64EncodeData(const void *inInputData, size_t inInputDataSize, char *outOutputData, size_t *ioOutputDataSize, BOOL wrapped);
extern bool Base64DecodeData(const void *inInputData, size_t inInputDataSize, void *ioOutputData, size_t *ioOutputDataSize);
实现文件
#include "Base64Transcoder.h"

#include

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

/*
-1 = Base64 end of data marker.
-2 = White space (tabs, cr, lf, space)
-3 = Noise (all non whitespace, non-base64 characters)
-4 = Dangerous noise
-5 = Illegal noise (null byte)
*/

const SInt8 kBase64DecodeTable[128] = {
/* 0x00 */ -5, /* 0x01 */ -3, /* 0x02 */ -3, /* 0x03 */ -3,
/* 0x04 */ -3, /* 0x05 */ -3, /* 0x06 */ -3, /* 0x07 */ -3,
/* 0x08 */ -3, /* 0x09 */ -2, /* 0x0a */ -2, /* 0x0b */ -2,
/* 0x0c */ -2, /* 0x0d */ -2, /* 0x0e */ -3, /* 0x0f */ -3,
/* 0x10 */ -3, /* 0x11 */ -3, /* 0x12 */ -3, /* 0x13 */ -3,
/* 0x14 */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: