base64编码 vba_[VBA]Base64编码和Base64解码
'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解码相关推荐
- base64编码_几分钟看懂Base64编码原理
Base64简介 Base64是基于64个可打印字符(小写字母a-z,大写字母A-Z,数字0-9,符号"+","/" 再加上作为垫字的"=" ...
- Base64 算法原理,以及编码、解码【加密、解密】 介绍
Base64编码,是我们程序开发中经常使用到的编码方法.它是一种基于用64个可打印字符来表示二进制数据的表示方法.它通常用作存储.传输一些二进制数据编码方法!也是MIME(多用途互联网邮件扩展,主要用 ...
- linux jpg图片转base64,html中的图片直接使用base64编码后的字符串代替
最近来了一个网页,里面有图片,但是却没有引用外部的图片资源,很好奇.查看代码后发现,里面的图片是使用base64编码后的字符串代替了,这个叫做Data URI scheme. Data URI sch ...
- 在线BASE64加密解密、UrlEncode编码/解码、native/ascii在线转换工具 -toolfk程序员工具网
本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果.Tool ...
- byte[]转String,编码与乱码问题,以及Base64编码{{1038}}
首先常用的byte[]直接转String很简单: [java] view plaincopy public static void main(String[] args) { String str=& ...
- base64转html文件,图片转换成Base64编码集成到html文件
首先为什么要这么做? 原因很简单这样可以减少与服务器的请求,当然对于一些浏览器并不支持,如IE8.通常用在手机版网站中,具体转化方法如下: 1.在线打开Base64的编码器将图片编码成Base64 ...
- java base64编码换行符_Base64编码出现换行符
概述 Base64是一种字符串编码格式,Base64采用A-Z a-z 0-9 "+" "/"这一共64个字符来编码原始字符(还有垫字符"=" ...
- Base64到底是个啥编码? 我熬夜把它整明白了
大家好,我是刘志军,一名python开发者 以后决定把原创文章放在csdn进行首发,争取冲上榜单 base64 是什么? Base64,顾名思义,就是包括小写字母a-z.大写字母A-Z.数字0-9.符 ...
- html本地路径图片转成base64,canvas-toDataURL()将图片转为dataURL(base64)
将图片转为base64的好处 将图片转换为Base64编码,可以让你很方便地在没有上传文件的条件下将图片插入其它的网页.编辑器中. 这对于一些小的图片是极为方便的,因为你不需要再去寻找一个保存图片的地 ...
- php 图片文件转base64编码格式,php如何将图片转为base64编码格式
php将图片转为base64编码格式的方法:首先读取图片流:然后利用[base64_encode]函数进行编码格式转换即可. PHP保存Base64图片base64_decode的问题 PHP对Bas ...
最新文章
- 系统备份是对计算机硬件进行维户吗,计算机系统维护毕业论文_精品.doc
- 互联网日报 | TikTok将开启Pre-IPO融资;菜鸟裹裹战略再升级;滴滴中国西区总部落户重庆江北...
- NOTEPAD大神是否鄙视一切IDE?
- Fedora 13 正确安装 VirtualBox 3.2.x 的 步骤
- bzoj 1196: [HNOI2006]公路修建问题(贪心+最小生成树)
- 简单测试lambda和linq查找的性能
- 洛谷P1238 走迷宫
- 查看IIS哪个应用程序池占用CPU过高
- java excel 字体_java中Excel字体的设置,背景和纹理的操作
- git checkout切换分支报错解决办法
- Tecno(传音)手机在非洲市场占有率高达40%,成功原因是?
- “顺丰杯”包装设计大赛背后的故事:浅谈顺丰的产学研包装生态圈布局
- 【QGIS入门实战精品教程】10.1:QGIS基于DEM数据的地形分析案例教程
- SpringBoot 接口防止恶意刷新和暴力请求
- 1.深入.NET框架
- 【漏洞挖掘】QQ钓鱼网站实战渗透
- 人工智能无法替代的几个职业
- python实现树的遍历
- C/C++ 通过CRC32实现反破解
- CNCC2020_陈天奇_TVM: An automated deep learning compiler
热门文章
- 【优化算法】精子群优化算法(SSO)【含Matlab源码 1465期】
- 【物流选址】基于matlab佛洛依德算法求解物流选址问题【含Matlab源码 892期】
- 【图像分割】基于matlab视网膜图像分割【含Matlab源码 382期】
- 【基础教程】基于matlab图像处理图像分割【含Matlab源码 191期】
- 【车间调度】基于matlab遗传算法求解置换流水车间调度问题【含Matalb源码 176期】
- shader 反射 水面_大规模水面渲染
- ibm watson_使用IBM Watson Assistant构建AI私人教练-第1部分
- 边缘计算中高效ML的EEoI
- anaconda简单解决PackagesNotFoundError: The following packages are not available from current channels:
- 笔记本linux版刚买回来怎么检查,新电脑买回来要怎么做