iOS 图片转换成base64(二)
2016-04-08 18:30
453 查看
+ (NSString*) base64Encode:(NSData *)data
{
static
char base64EncodingTable[64] = {
'A',
'B', 'C',
'D', 'E',
'F', 'G',
'H', 'I',
'J', 'K',
'L', 'M',
'N', 'O',
'P',
'Q',
'R', 'S',
'T', 'U',
'V', 'W',
'X', 'Y',
'Z', 'a',
'b', 'c',
'd', 'e',
'f',
'g',
'h', 'i',
'j', 'k',
'l', 'm',
'n', 'o',
'p', 'q',
'r', 's',
't', 'u',
'v',
'w',
'x', 'y',
'z', '0',
'1', '2',
'3', '4',
'5', '6',
'7', '8',
'9', '+',
'/'
};
int length = [data
length];
unsigned
long ixtext, lentext;
long ctremaining;
unsigned
char input[3], output[4];
short i, charsonline =
0, ctcopy;
const
unsigned char *raw;
NSMutableString *result;
lentext = [data length];
if (lentext <
1)
return
@"";
result = [NSMutableString
stringWithCapacity: lentext];
raw = [data bytes];
ixtext = 0;
while (true) {
ctremaining = lentext - ixtext;
if (ctremaining <=
0)
break;
for (i =
0; i < 3; i++) {
unsigned
long ix = ixtext + i;
if (ix < lentext)
input[i] = raw[ix];
else
input[i] = 0;
}
output[0] = (input[0] &
0xFC) >> 2;
output[1] = ((input[0] &
0x03) << 4) | ((input[1] &
0xF0) >> 4);
output[2] = ((input[1] &
0x0F) << 2) | ((input[2] &
0xC0) >> 6);
output[3] = input[2] &
0x3F;
ctcopy = 4;
switch (ctremaining) {
case
1:
ctcopy = 2;
break;
case
2:
ctcopy = 3;
break;
}
for (i =
0; i < ctcopy; i++)
[result appendString: [NSString
stringWithFormat: @"%c", base64EncodingTable[output[i]]]];
for (i = ctcopy; i <
4; i++)
[result appendString:
@"="];
ixtext += 3;
charsonline += 4;
if ((length >
0) && (charsonline >= length))
charsonline = 0;
}
return result;
}
{
static
char base64EncodingTable[64] = {
'A',
'B', 'C',
'D', 'E',
'F', 'G',
'H', 'I',
'J', 'K',
'L', 'M',
'N', 'O',
'P',
'Q',
'R', 'S',
'T', 'U',
'V', 'W',
'X', 'Y',
'Z', 'a',
'b', 'c',
'd', 'e',
'f',
'g',
'h', 'i',
'j', 'k',
'l', 'm',
'n', 'o',
'p', 'q',
'r', 's',
't', 'u',
'v',
'w',
'x', 'y',
'z', '0',
'1', '2',
'3', '4',
'5', '6',
'7', '8',
'9', '+',
'/'
};
int length = [data
length];
unsigned
long ixtext, lentext;
long ctremaining;
unsigned
char input[3], output[4];
short i, charsonline =
0, ctcopy;
const
unsigned char *raw;
NSMutableString *result;
lentext = [data length];
if (lentext <
1)
return
@"";
result = [NSMutableString
stringWithCapacity: lentext];
raw = [data bytes];
ixtext = 0;
while (true) {
ctremaining = lentext - ixtext;
if (ctremaining <=
0)
break;
for (i =
0; i < 3; i++) {
unsigned
long ix = ixtext + i;
if (ix < lentext)
input[i] = raw[ix];
else
input[i] = 0;
}
output[0] = (input[0] &
0xFC) >> 2;
output[1] = ((input[0] &
0x03) << 4) | ((input[1] &
0xF0) >> 4);
output[2] = ((input[1] &
0x0F) << 2) | ((input[2] &
0xC0) >> 6);
output[3] = input[2] &
0x3F;
ctcopy = 4;
switch (ctremaining) {
case
1:
ctcopy = 2;
break;
case
2:
ctcopy = 3;
break;
}
for (i =
0; i < ctcopy; i++)
[result appendString: [NSString
stringWithFormat: @"%c", base64EncodingTable[output[i]]]];
for (i = ctcopy; i <
4; i++)
[result appendString:
@"="];
ixtext += 3;
charsonline += 4;
if ((length >
0) && (charsonline >= length))
charsonline = 0;
}
return result;
}
相关文章推荐
- iOS 将图片转换成base64编码
- iostat 命令行详解
- iOS MBProgress工具类
- iOS开发--生成二维码及扫描二维码(原生)
- IOS使用Jenkins进行持续集成
- iOS开发之Quartz 2D绘图高阶用法(二)
- iOS:即时通讯之<掌握篇 环信>
- iOS 获取视图中心点
- iOS开发之 用第三方类库实现轮播图
- iOS 如何设置一整张图片作为背景图片(穿透导航栏)
- iOS 去掉导航栏最下面线的方法
- IOS打包封装Framework
- iOS多语言功能开发小结
- iOS学习资源
- iOS原生二维码扫描
- GIT在iOS开发中的使用
- iOS ftp 上次
- 打造更轻量级的ViewControllers
- [IOS 开发] GCD常用方法
- IOS 将请求参数字典转换为参数字符串