【无限互联学员作品】C语言基于base64编码字符串

上传人:飞*** 文档编号:5010302 上传时间:2017-08-27 格式:DOC 页数:5 大小:51.05KB
返回 下载 相关 举报
【无限互联学员作品】C语言基于base64编码字符串_第1页
第1页 / 共5页
【无限互联学员作品】C语言基于base64编码字符串_第2页
第2页 / 共5页
【无限互联学员作品】C语言基于base64编码字符串_第3页
第3页 / 共5页
【无限互联学员作品】C语言基于base64编码字符串_第4页
第4页 / 共5页
【无限互联学员作品】C语言基于base64编码字符串_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《【无限互联学员作品】C语言基于base64编码字符串》由会员分享,可在线阅读,更多相关《【无限互联学员作品】C语言基于base64编码字符串(5页珍藏版)》请在金锄头文库上搜索。

1、C语言基于 base64 编码字符串当想把字符串采用 base64 编码时,可以采用别人写好的 base64 编码头文件,我们在程序中引入头文件后就可以直接调用他们的方法这样很方便我们编写程序。下面是 base64 代码#include const char base = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=; char* base64_encode(const char* data, int data_len); char *base64_decode(const char* data, int d

2、ata_len); static char find_pos(char ch); /* 编码 */ char *base64_encode(const char* data, int data_len) /int data_len = strlen(data); int prepare = 0; int ret_len; int temp = 0; char *ret = NULL; char *f = NULL; int tmp = 0; char changed4; int i = 0; ret_len = data_len / 3; temp = data_len % 3; if (te

3、mp 0) ret_len += 1; ret_len = ret_len*4 + 1; ret = (char *)malloc(ret_len); if ( ret = NULL) printf(No enough memory.n); exit(0); memset(ret, 0, ret_len); f = ret; while (tmp = data_len) break; prepare = (prepare (3-i)*6) & 0x3F; *f = basechangedi; /printf(%.2X, changedi); f+; *f = 0; return ret; /*

4、 */ static char find_pos(char ch) char *ptr = (char*)strrchr(base, ch);/the last position (the only) in base return (ptr - base); /* */ char *base64_decode(const char *data, int data_len) int ret_len = (data_len / 4) * 3; int equal_count = 0; char *ret = NULL; char *f = NULL; int tmp = 0; int temp =

5、 0; char need3; int prepare = 0; int i = 0; if (*(data + data_len - 1) = =) equal_count += 1; if (*(data + data_len - 2) = =) equal_count += 1; if (*(data + data_len - 3) = =) /seems impossible equal_count += 1; switch (equal_count) case 0: ret_len += 4;/3 + 1 1 for NULL break; case 1: ret_len += 4;

6、/Ceil(6*3)/8)+1 break; case 2: ret_len += 3;/Ceil(6*2)/8)+1 break; case 3: ret_len += 2;/Ceil(6*1)/8)+1 break; ret = (char *)malloc(ret_len); if (ret = NULL) printf(No enough memory.n); exit(0); memset(ret, 0, ret_len); f = ret; while (tmp = (data_len - equal_count) break; prepare = (prepare (2-i)*8) & 0xFF); f+; *f = 0; return ret; 下面为测试代码:#include#includebase64Tools.hint main()char * p=你好啊!哈哈哈哈!abc!;char *c,*b;/编码c=base64_encode(p,strlen(p);printf(%s,c);/解码b=base64_decode(c,strlen(c);printf(%s,b);free(b);free(c);return 0;这样相当于把 base64 编码给封装了一下,方便其他程序调用。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 研究报告 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号