首页WEB开发ASP教程 → 编码解码相关函数汇总

编码解码相关函数汇总

日期:2007-3-27 08:19:09 出处:其他转载 作者:不详 人气:
上一页 [1] [2] [3] [4] [5] [6] 下一页

base64 及 quote-printable 的编解码程序
A :
       

       
       
****************************** 

*          其他代码请见原帖!            * 

****************************** 

 

 

Private  Function  Base64_Encode(strSource)  As  String  'base6加密算法 

        Const  BASE64_TABLE  As  String  =  "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" 

        Dim  strTempLine  As  String 

        Dim  j  As  Long 

        For  j  =  1  To  (Len(strSource)  -  Len(strSource)  Mod  3)  Step  3 

                strTempLine  =  strTempLine  +  Mid(BASE64_TABLE,  (Asc(Mid(strSource,  j,  1))  \  4)  +  1,  1) 

                strTempLine  =  strTempLine  +  Mid(BASE64_TABLE,  ((Asc(Mid(strSource,  j,  1))  Mod  4)  *  16  _ 

                                            +  Asc(Mid(strSource,  j  +  1,  1))  \  16)  +  1,  1) 

                strTempLine  =  strTempLine  +  Mid(BASE64_TABLE,  ((Asc(Mid(strSource,  j  +  1,  1))  Mod  16)  *  4  _ 

                                            +  Asc(Mid(strSource,  j  +  2,  1))  \  64)  +  1,  1) 

                strTempLine  =  strTempLine  +  Mid(BASE64_TABLE,  (Asc(Mid(strSource,  j  +  2,  1))  Mod  64)  +  1,  1) 

        Next  j 

        If  Not  (Len(strSource)  Mod  3)  =  0  Then 

                  If  (Len(strSource)  Mod  3)  =  2  Then 

                        strTempLine  =  strTempLine  +  Mid(BASE64_TABLE,  (Asc(Mid(strSource,  j,  1))  \  4)  +  1,  1) 

                        strTempLine  =  strTempLine  +  Mid(BASE64_TABLE,  (Asc(Mid(strSource,  j,  1))  Mod  4)  *  16  _ 

                                            +  Asc(Mid(strSource,  j  +  1,  1))  \  16  +  1,  1) 

                        strTempLine  =  strTempLine  +  Mid(BASE64_TABLE,  (Asc(Mid(strSource,  j  +  1,  1))  Mod  16)  *  4  +  1,  1) 

                        strTempLine  =  strTempLine  &  "=" 

                ElseIf  (Len(strSource)  Mod  3)  =  1  Then 

                        strTempLine  =  strTempLine  +  Mid(BASE64_TABLE,  Asc(Mid(strSource,  j,  1))  \  4  +  1,  1) 

                        strTempLine  =  strTempLine  +  Mid(BASE64_TABLE,  (Asc(Mid(strSource,  j,  1))  Mod  4)  *  16  +  1,  1) 

                        strTempLine  =  strTempLine  &  "==" 

                End  If 

          End  If 

        Base64_Encode  =  strTempLine 

End  Function 

--------------------------------------------------------------- 

 

从通用性来讲,最好把字符串转换为字符数组,这样对传输中文和二进制都有好处 

例如: 

dim  b()  as  byte 

dim  str  as  string,strBase64  as  string 

 

str="XXXXXXXXXXXXXXXXXXXXXXX" 

b()=strconv(str,vbFromUnionCode) 

 

strBase64=ConvertToBase64(b) 

 

public  function  ConvertToBase64(SourceData()  as  byte)  AS  String 

 

end  function 

 

用Ubound关键字可以得到数组的字节数 

 

由于转换的结果中只包含了“0-9”、“A-Z”、“a-z”、“+”、“/”、“=”,可以用String类型来存放 

另外,base64传输中文时有一个弱点,如果丢掉其中一个字节,就会变成满篇乱码

************************************************************************

上一页 [1] [2] [3] [4] [5] [6] 下一页

关于本站 | 帮 助 | 广告服务 | 版权声明 | 业务合作 | 捐助本站 | 软件发布 | 联系我们
77资源下载 www.77zy.com ©2007-2008 版权所有
备案编号:赣ICP备07002641号  QQ:674648476