变量 AnsiString m_64code; //储存Base64编码的字符串 char* m_s; //临时存储参数字符串 //Base64字符表 char m_64[]= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; m_len = s.Length(); //取得字符串长度 m_s = s.c_str(); m_64code=""; //返回串置空 //处理3的倍数以内的字符 for(i=0;i<m_len-m_len%3;i+=3){ m_tmp=m_s/4; m_64code+=m_64[m_tmp]; m_tmp=m_s%4*16 + m_s[i+1]/16; m_64code+=m_64[m_tmp]; m_tmp=m_s[i+1]%16*4 + m_s[i+2]/64; m_64code+=m_64[m_tmp]; m_tmp=m_s[i+2]%64; m_64code+=m_64[m_tmp]; } //如果字符串的长度被3除余2 ,不足的位数补0,尾部补“= if(m_len%3==2){ m_tmp=m_s[m_len-2]/4; m_64code+=m_64[m_tmp]; m_tmp=m_s[m_len-2]%4*16+m_s[m_len-1]/16; m_64code+=m_64[m_tmp]; m_tmp=m_s[m_len-1]%16*4; m_64code+=m_64[m_tmp]; m_64code+='='; } //如果字符串的长度被3除余1 ,不足的位数补0,尾部补两个“=” if(m_len%3==1){ m_tmp=m_s[m_len-1]/4; m_64code+=m_64[m_tmp]; m_tmp=m_s[m_len-1]%4*16; m_64code+=m_64[m_tmp]; m_64code+="=="; } return m_64code; } 6 结束语 本程序在Windows 2000环境下使用Borland C++ Builder 6.0编写及调试的,分别使用网易和新浪邮箱做实验,都可以顺利完成身份认证以及邮件发送功能。
参考文献 [1]. 王宏、傅新苗、冉欣,《C++ Builder 程序设计教程》,清华大学出版社,2000年3月第一版 [2]. http://www.faqs.org/rfcs/rfc2554.html [3]. Borland C++ Builder 联机帮助系统
上一页 [1] [2]
Tags:
|