Base64编码

it2025-03-22  16

Option Explicit Private Const cstBase64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" Private arrBase64() As String '作者:同济黄正 '00100001 00100001 00100001 --源码 '00001000 00010010 00000100 00100001 --Base64码 Public Function Base64Encode(strSource As String) As String On Error Resume Next '适用于中、英文的Base64编码/解码VB6超精简版 作者:同济黄正 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超精简版 作者:同济黄正 On Error Resume Next Dim arrB() As Byte, bTmp(3) As Byte, bT, 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

转载于:https://www.cnblogs.com/HappyQQ/archive/2008/01/12/1036039.html

最新回复(0)