谁有对接收的收邮件进行base64解码的源程序,或者告诉我一个url? 给分了! 更正!是对邮件的附件进行base64解码!先谢谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我有base64编解码的程序,你试试看。/* base64 en/decoder - Ver 1.01 - Programmed by hsj : 99.07.29 : 99.07.30 debug :) */ #include <stdio.h> #include <stdlib.h> int base64enc(char *,char *); int base64dec(char *,char *); void usage(char *); void main(int argc,char *argv[]) { int ret; if(argc<4) usage(argv[0]); if((strcmp(argv[1],"-e")!=0)&&(strcmp(argv[1],"-d")!=0)) usage(argv[0]); switch(argv[1][1]) { case 'e': ret = base64enc(argv[2],argv[3]); break; case 'd': ret = base64dec(argv[2],argv[3]); break; } if(ret==0) printf("Done..."); else printf("Error. code[%d]\n",ret); } int base64enc(char *infile,char *outfile) { int i,len,llen = 0,pad = 0; unsigned char buf[4],buf2[4],lf = '\n'; FILE *fpi,*fpo; if((fpi=fopen(infile,"rb"))==0) return(-1); if((fpo=fopen(outfile,"wb"))==0) { fclose(fpi); return(-2); } for(;;) { if((len=fread((char *)buf,1,3,fpi))==0) break; if(len<3) { pad = 3 - len; for(i=len;i<3;i++) buf[i] = 0; } buf2[0] = buf[0] >> 2; buf2[1] = (buf[0] & 0x03) << 4 | buf[1] >> 4; buf2[2] = (buf[1] & 0x0f) << 2 | buf[2] >> 6; buf2[3] = buf[2] & 0x3f; for(i=0;i<4;i++) { if(buf2[i]>=0 && buf2[i]<=25) buf2[i] = buf2[i] + 'A'; else if(buf2[i]>=26 && buf2[i]<=51) buf2[i] = buf2[i] - 26 + 'a'; else if(buf2[i]>=52 && buf2[i]<=61) buf2[i] = buf2[i] - 52 + '0'; else if(buf2[i]==62) buf2[i] = '+'; else if(buf2[i]==63) buf2[i] = '/'; } if(pad) { fwrite(buf2,4-pad,1,fpo); for(i=0;i<pad;i++) buf2[i] = '='; fwrite(buf2,pad,1,fpo); } else fwrite(buf2,4,1,fpo); llen += 4; if(llen==76) { fwrite(&lf,1,1,fpo); llen = 0; } } fwrite(&lf,1,1,fpo); fclose(fpi); fclose(fpo); return(0); } int base64dec(char *infile,char *outfile) { int i,pad = 0; unsigned char buf[4],buf2[4]; FILE *fpi,*fpo; if((fpi=fopen(infile,"rb"))==0) return(-1); if((fpo=fopen(outfile,"wb"))==0) { fclose(fpi); return(-2); } for(;;) { i = 0; while(i<4) { if(fread(&buf[i],1,1,fpi)==0) break; if((buf[i]!='\r')&&(buf[i]!='\n')) i++; } if(i==0) break; if(i!=4) { fclose(fpi); fclose(fpo); remove(outfile); return(-3); } for(i=0;i<4;i++) { if(buf[i]>='A' && buf[i]<='Z') buf[i] = buf[i] - 'A'; else if(buf[i]>='a' && buf[i]<='z') buf[i] = buf[i] - 'a' + 26; else if(buf[i]>='0' && buf[i]<='9') buf[i] = buf[i] - '0' + 52; else if(buf[i]=='+') buf[i] = 62; else if(buf[i]=='/') buf[i] = 63; else if(buf[i]=='=') { pad = 4 - i; for(;i<4;i++) buf[i] = 0; break; } else { fclose(fpi); fclose(fpo); remove(outfile); return(-4); } } buf2[0] = buf[0] << 2 | buf[1] >> 4; buf2[1] = buf[1] << 4 | buf[2] >> 2; buf2[2] = buf[2] << 6 | buf[3]; fwrite(buf2,3-pad,1,fpo); } fclose(fpi); fclose(fpo); return(0); } void usage(char *name) { printf("usage : $ %s [-e:d] target-file out-file\n",name); printf(" -e : execute base64 encode.\n"); printf(" -d : execute base64 decode.\n"); exit(0); } 关于 钩子 放行键盘消息 在界面绘图,设置字体大小,遇到非常奇怪的问题!急求!!! 继续MFC常规DLL的问题 不好意思,又遇到问题了,如何删除ListControl中选中的记录 消息为什么会走进来 一个多线程的问题 SECToolBarManager???哪位知道如何实现? ----------PASCAL函数调用方式是什么意思/----------------- 如何改变一个窗口的颜色 关于32位dll 注入64位系统 里的32位程序和64位程序的疑惑 简单问题:unistd.h是VC++已有的头文件吗? 用VC++怎样获取当前网络数据流量.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货