'VBA Base64 解码/解密函数:

Function Base64Decode(B64 As String) As String 'Base64 解码

On Error GoTo over '排错

Dim OutStr() As Byte, i As Long, j As Long

Const B64_CHAR_DICT = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="

If InStr(1, B64, "=") <> 0 Then B64 = Left(B64, InStr(1, B64, "=") - 1) '判断Base64真实长度,除去补位

Dim kk, length As Long, mods As Long

mods = Len(B64) Mod 4

length = Len(B64) - mods

ReDim OutStr(length / 4 * 3 - 1 + Switch(mods = 0, 0, mods = 2, 1, mods = 3, 2))

For i = 1 To length Step 4

Dim buf(3) As Byte

For j = 0 To 3

buf(j) = InStr(1, B64_CHAR_DICT, Mid(B64, i + j, 1)) - 1 '根据字符的位置取得索引值

Next

OutStr((i - 1) / 4 * 3) = buf(0) * &H4 + (buf(1) And &H30) / &H10

OutStr((i - 1) / 4 * 3 + 1) = (buf(1) And &HF) * &H10 + (buf(2) And &H3C) / &H4

OutStr((i - 1) / 4 * 3 + 2) = (buf(2) And &H3) * &H40 + buf(3)

Next

If mods = 2 Then

OutStr(length / 4 * 3) = (InStr(1, B64_CHAR_DICT, Mid(B64, length + 1, 1)) - 1) * &H4 + ((InStr(1, B64_CHAR_DICT, Mid(B64, length + 2, 1)) - 1) And &H30) / 16

ElseIf mods = 3 Then

OutStr(length / 4 * 3) = (InStr(1, B64_CHAR_DICT, Mid(B64, length + 1, 1)) - 1) * &H4 + ((InStr(1, B64_CHAR_DICT, Mid(B64, length + 2, 1)) - 1) And &H30) / 16

OutStr(length / 4 * 3 + 1) = ((InStr(1, B64_CHAR_DICT, Mid(B64, length + 2, 1)) - 1) And &HF) * &H10 + ((InStr(1, B64_CHAR_DICT, Mid(B64, length + 3, 1)) - 1) And &H3C) / &H4

End If

For i = 0 To UBound(OutStr)

Base64Decode = Base64Decode & Chr(OutStr(i))

Next i '读取解码结果

over:

End Function

'VBA Base64 解码/解密函数:

Function Base64Decode(B64 As String) As String 'Base64 解码

On Error GoTo over '排错

Dim OutStr() As Byte, i As Long, j As Long

Const B64_CHAR_DICT = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="

If InStr(1, B64, "=") <> 0 Then B64 = Left(B64, InStr(1, B64, "=") - 1) '判断Base64真实长度,除去补位

Dim kk, length As Long, mods As Long

mods = Len(B64) Mod 4

length = Len(B64) - mods

ReDim OutStr(length / 4 * 3 - 1 + Switch(mods = 0, 0, mods = 2, 1, mods = 3, 2))

For i = 1 To length Step 4

Dim buf(3) As Byte

For j = 0 To 3

buf(j) = InStr(1, B64_CHAR_DICT, Mid(B64, i + j, 1)) - 1 '根据字符的位置取得索引值

Next

OutStr((i - 1) / 4 * 3) = buf(0) * &H4 + (buf(1) And &H30) / &H10

OutStr((i - 1) / 4 * 3 + 1) = (buf(1) And &HF) * &H10 + (buf(2) And &H3C) / &H4

OutStr((i - 1) / 4 * 3 + 2) = (buf(2) And &H3) * &H40 + buf(3)

Next

If mods = 2 Then

OutStr(length / 4 * 3) = (InStr(1, B64_CHAR_DICT, Mid(B64, length + 1, 1)) - 1) * &H4 + ((InStr(1, B64_CHAR_DICT, Mid(B64, length + 2, 1)) - 1) And &H30) / 16

ElseIf mods = 3 Then

OutStr(length / 4 * 3) = (InStr(1, B64_CHAR_DICT, Mid(B64, length + 1, 1)) - 1) * &H4 + ((InStr(1, B64_CHAR_DICT, Mid(B64, length + 2, 1)) - 1) And &H30) / 16

OutStr(length / 4 * 3 + 1) = ((InStr(1, B64_CHAR_DICT, Mid(B64, length + 2, 1)) - 1) And &HF) * &H10 + ((InStr(1, B64_CHAR_DICT, Mid(B64, length + 3, 1)) - 1) And &H3C) / &H4

End If

For i = 0 To UBound(OutStr)

Base64Decode = Base64Decode & Chr(OutStr(i))

Next i '读取解码结果

over:

End Function

base64编码 vba_[VBA]Base64编码和Base64解码相关推荐

  1. base64编码_几分钟看懂Base64编码原理

    Base64简介 Base64是基于64个可打印字符(小写字母a-z,大写字母A-Z,数字0-9,符号"+","/" 再加上作为垫字的"=" ...

  2. Base64 算法原理,以及编码、解码【加密、解密】 介绍

    Base64编码,是我们程序开发中经常使用到的编码方法.它是一种基于用64个可打印字符来表示二进制数据的表示方法.它通常用作存储.传输一些二进制数据编码方法!也是MIME(多用途互联网邮件扩展,主要用 ...

  3. linux jpg图片转base64,html中的图片直接使用base64编码后的字符串代替

    最近来了一个网页,里面有图片,但是却没有引用外部的图片资源,很好奇.查看代码后发现,里面的图片是使用base64编码后的字符串代替了,这个叫做Data URI scheme. Data URI sch ...

  4. 在线BASE64加密解密、UrlEncode编码/解码、native/ascii在线转换工具 -toolfk程序员工具网

    本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果.Tool ...

  5. byte[]转String,编码与乱码问题,以及Base64编码{{1038}}

    首先常用的byte[]直接转String很简单: [java] view plaincopy public static void main(String[] args) { String str=& ...

  6. base64转html文件,图片转换成Base64编码集成到html文件

    首先为什么要这么做?  原因很简单这样可以减少与服务器的请求,当然对于一些浏览器并不支持,如IE8.通常用在手机版网站中,具体转化方法如下: 1.在线打开Base64的编码器将图片编码成Base64 ...

  7. java base64编码换行符_Base64编码出现换行符

    概述 Base64是一种字符串编码格式,Base64采用A-Z a-z 0-9 "+" "/"这一共64个字符来编码原始字符(还有垫字符"=" ...

  8. Base64到底是个啥编码? 我熬夜把它整明白了

    大家好,我是刘志军,一名python开发者 以后决定把原创文章放在csdn进行首发,争取冲上榜单 base64 是什么? Base64,顾名思义,就是包括小写字母a-z.大写字母A-Z.数字0-9.符 ...

  9. html本地路径图片转成base64,canvas-toDataURL()将图片转为dataURL(base64)

    将图片转为base64的好处 将图片转换为Base64编码,可以让你很方便地在没有上传文件的条件下将图片插入其它的网页.编辑器中. 这对于一些小的图片是极为方便的,因为你不需要再去寻找一个保存图片的地 ...

  10. php 图片文件转base64编码格式,php如何将图片转为base64编码格式

    php将图片转为base64编码格式的方法:首先读取图片流:然后利用[base64_encode]函数进行编码格式转换即可. PHP保存Base64图片base64_decode的问题 PHP对Bas ...

最新文章

  1. 系统备份是对计算机硬件进行维户吗,计算机系统维护毕业论文_精品.doc
  2. 互联网日报 | TikTok将开启Pre-IPO融资;菜鸟裹裹战略再升级;滴滴中国西区总部落户重庆江北...
  3. NOTEPAD大神是否鄙视一切IDE?
  4. Fedora 13 正确安装 VirtualBox 3.2.x 的 步骤
  5. bzoj 1196: [HNOI2006]公路修建问题(贪心+最小生成树)
  6. 简单测试lambda和linq查找的性能
  7. 洛谷P1238 走迷宫
  8. 查看IIS哪个应用程序池占用CPU过高
  9. java excel 字体_java中Excel字体的设置,背景和纹理的操作
  10. git checkout切换分支报错解决办法
  11. Tecno(传音)手机在非洲市场占有率高达40%,成功原因是?
  12. “顺丰杯”包装设计大赛背后的故事:浅谈顺丰的产学研包装生态圈布局
  13. 【QGIS入门实战精品教程】10.1:QGIS基于DEM数据的地形分析案例教程
  14. SpringBoot 接口防止恶意刷新和暴力请求
  15. 1.深入.NET框架
  16. 【漏洞挖掘】QQ钓鱼网站实战渗透
  17. 人工智能无法替代的几个职业
  18. python实现树的遍历
  19. C/C++ 通过CRC32实现反破解
  20. CNCC2020_陈天奇_TVM: An automated deep learning compiler

热门文章

  1. 【优化算法】精子群优化算法(SSO)【含Matlab源码 1465期】
  2. 【物流选址】基于matlab佛洛依德算法求解物流选址问题【含Matlab源码 892期】
  3. 【图像分割】基于matlab视网膜图像分割【含Matlab源码 382期】
  4. 【基础教程】基于matlab图像处理图像分割【含Matlab源码 191期】
  5. 【车间调度】基于matlab遗传算法求解置换流水车间调度问题【含Matalb源码 176期】
  6. shader 反射 水面_大规模水面渲染
  7. ibm watson_使用IBM Watson Assistant构建AI私人教练-第1部分
  8. 边缘计算中高效ML的EEoI
  9. anaconda简单解决PackagesNotFoundError: The following packages are not available from current channels:
  10. 笔记本linux版刚买回来怎么检查,新电脑买回来要怎么做