Base64编码/解码VB6超精简版(适用于中、英文)
上次因为要编写自动登录邮箱的程序,需要Base64编码,但是我看了几种版本的VB下Base64编码的程序,发现要么就是太冗长,要么就是不支持中文,要么根本不能用,于是我想求人不如求己,便仔细研究了一下Base64编码原理,然后编写了这段程序,在电脑上调试通过,可以顺利进行Base64编码/解码,速度也快。现在拿出来分享给大家,希望对大家有所帮助。若有Bug请与我联系:hzh932@gmail.com。
程序模块:
Option Explicit
Private Const cstBase64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
Private arrBase64() As String
'作者:同济黄正 引用请注明出处:http://fine3x.com
'00100001 00100001 00100001 --源码
'00001000 00010010 00000100 00100001 --Base64码
Public Function Base64Encode(strSource As String) As String
On Error Resume Next
'适用于中、英文的Base64编码/解码VB6超精简版 作者:同济黄正 引用请注明出处:http://fine3x.com
If UBound(arrBase64) = -1 Then
arrBase64 = Split(StrConv(cstBase64, vbUnicode), vbNullChar)
End If
Dim arrB() As Byte, bTmp(2) As Byte, bT As Byte
Dim I As Long, J As Long
arrB = StrConv(strSource, vbFromUnicode)
J = UBound(arrB)
For I = 0 To J Step 3
Erase bTmp
bTmp(0) = arrB(I + 0)
bTmp(1) = arrB(I + 1)
bTmp(2) = arrB(I + 2)
bT = (bTmp(0) And 252) / 4
Base64Encode = Base64Encode & arrBase64(bT)
bT = (bTmp(0) And 3) * 16
bT = bT + bTmp(1) / 16
Base64Encode = Base64Encode & arrBase64(bT)
bT = (bTmp(1) And 15) * 4
bT = bT + bTmp(2) / 64
If I + 1 <= J Then
Base64Encode = Base64Encode & arrBase64(bT)
Else
Base64Encode = Base64Encode & "="
End If
bT = bTmp(2) And 63
If I + 2 <= J Then
Base64Encode = Base64Encode & arrBase64(bT)
Else
Base64Encode = Base64Encode & "="
End If
Next
End Function
Public Function Base64Decode(strEncoded As String) As String
'适用于中、英文的Base64编码/解码VB6超精简版 作者:同济黄正 引用请注明出处:http://fine3x.com
On Error Resume Next
Dim arrB() As Byte, bTmp(3) As Byte, bT As Long, bRet() As Byte
Dim I As Long, J As Long
arrB = StrConv(strEncoded, vbFromUnicode)
J = InStr(strEncoded & "=", "=") - 2
ReDim bRet(J - J / 4 - 1)
For I = 0 To J Step 4
Erase bTmp
bTmp(0) = (InStr(cstBase64, Chr(arrB(I))) - 1) And 63
bTmp(1) = (InStr(cstBase64, Chr(arrB(I + 1))) - 1) And 63
bTmp(2) = (InStr(cstBase64, Chr(arrB(I + 2))) - 1) And 63
bTmp(3) = (InStr(cstBase64, Chr(arrB(I + 3))) - 1) And 63
bT = bTmp(0) * 2 ^ 18 + bTmp(1) * 2 ^ 12 + bTmp(2) * 2 ^ 6 + bTmp(3)
bRet((I / 4) * 3) = bT / 65536
bRet((I / 4) * 3 + 1) = (bT And 65280) / 256
bRet((I / 4) * 3 + 2) = bT And 255
Next
Base64Decode = StrConv(bRet, vbUnicode)
End Function
Base64编码/解码VB6超精简版(适用于中、英文)相关推荐
- Java Base64 编码解码方案总结
转载自 Java Base64 编码解码方案总结 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便.在实际应 ...
- js base64 编码解码
js base64 编码解码 encode decode,可以直接使用 function Base64() {// private property_keyStr = "ABCDEFGHIJ ...
- python使用base64编码解码数据
python使用base64编码解码数据 base64模块是用来作base64编码解码,常用于小型数据的传输.编码后的数据是一个字符串,其包括a-z.A-Z.0-9./.+共64个字符,即可用6个字节 ...
- java svgbase64转byte_java 图片进行base64 编码解码
java 图片进行base64 编码解码 刘振兴 代码分享 2017年06月07日 10555 2条评论 import sun.misc.BASE64Decoder; import sun.misc. ...
- openssl算法 —— 利用openssl进行BASE64编码解码、md5/sha1摘要、AES/DES3加密解密
openssl 加密字符串的方法: 一.利用openssl命令进行BASE64编码解码(base64 encode/decode): 1. BASE64编码命令 对字符串'abc'进行base64编码 ...
- Java工程中引用Base64编码解码小记
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一. Base64编码说明 Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两 ...
- 一些Base64编码/解码及数据压缩/解压方面的知识
一.Base64编码/解码 一般用到的是Delphi自带的单元EncdDecd,当然还有第三方提供的单元或控件,其中我所接触到的认为比较好的有Indy的TIdMimeEncode / TIdMimeD ...
- Javascript中Base64编码解码的使用实例
Javascript为我们提供了一个简单的方法来实现字符串的Base64编码和解码,分别是window.btoa()函数和window.atob()函数. 1 var encodedStr = win ...
- 原来浏览器原生支持JS Base64编码解码
原来浏览器原生支持JS Base64编码解码 转载来源:https://www.zhangxinxu.com/wordpress/2018/08/js-base64-atob-btoa-encode- ...
最新文章
- [你必须知道的.NET]第十二回:参数之惑---传递的艺术(下)
- linux sublime 输入中文,Linux中Sublime Text无法输入中文怎么办
- poj-Scout YYF I
- QQ相册后台存储架构重构与跨IDC容灾实践
- 文献记录(part29)--Building crack identification and total quality management method based on deep ...
- 使用JavaParser从源文件中提取JavaDoc文档
- 前端学习(1741):前端调试值之元素状态改变的监听方法
- asp.net的几种页面间的传值方法
- 收藏 | 使用合成数据集做目标检测
- JDBC性能优化方案
- Tensorflow 中添加正则化项
- mysqlbinlog配置
- SAP GUI 750 下载链接
- 基于python的微博舆情分析与研究—以《北京冬奥会》为关键词
- 扫一下这个神奇的二维码,Wifi不用输密码
- android 触摸屏校准,android实现触摸屏校准
- 空间数据计算引擎GeoSpark调研
- 六种黑客入侵手机的常见方式
- 知识图谱技术在大数据时代的必要性分析
- 关于SetCapture和GetCapture
热门文章
- 打开Sql数据库文件(扩展名为mdf)
- C轮累积融资1亿美金 禾多科技如何靠自我造血能力赢得资本青睐?
- VC++如何在程序中用代码注册和卸载ocx控件(代码)
- 硅烷偶联纳米SiO2改性形状记忆聚氨酯/抗体偶联的介孔二氧化硅/米非司酮纳米制剂/纳米二氧化硅接枝黄麻纤维可降解复合物
- SQL窗口函数-聚合窗口函数
- taskkill /im test.exe /f
- MIT-BIH介绍(三)如何使用MIT-BIH?
- windows下apache简单配置php解释器
- 2018汽车之家汽车品牌、车型数据库采集带品牌logo以及车型图
- java string分割_java 字符串分割的三种方法(总结)