Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Base64 en\de_code
Показать сообщение отдельно

Пользователь


Сообщения: 50
Благодарности: 1

Профиль | Отправить PM | Цитировать


Рабочее решение:
Код: Выделить весь код
Function Base64Decode(ByVal base64String)
  Const Base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
  Dim dataLength, sOut, groupBegin
  base64String = Replace(base64String, vbCrLf, "")
  base64String = Replace(base64String, vbTab, "")
  base64String = Replace(base64String, " ", "")
  dataLength = Len(base64String)
  If dataLength Mod 4 <> 0 Then
    Err.Raise 1, "Base64Decode", "Bad Base64 string."
    Exit Function
  End If

  For groupBegin = 1 To dataLength Step 4
    Dim numDataBytes, CharCounter, thisChar, thisData, nGroup, pOut
    numDataBytes = 3
    nGroup = 0

    For CharCounter = 0 To 3
   
      thisChar = Mid(base64String, groupBegin + CharCounter, 1)

      If thisChar = "=" Then
        numDataBytes = numDataBytes - 1
        thisData = 0
      Else
        thisData = InStr(1, Base64, thisChar, vbBinaryCompare) - 1
      End If
      If thisData = -1 Then
        Err.Raise 2, "Base64Decode", "Bad character In Base64 string."
        Exit Function
      End If

      nGroup = 64 * nGroup + thisData
    Next

    nGroup = Hex(nGroup)

    nGroup = String(6 - Len(nGroup), "0") & nGroup

    pOut = Chr(CByte("&H" & Mid(nGroup, 1, 2))) + _
      Chr(CByte("&H" & Mid(nGroup, 3, 2))) + _
      Chr(CByte("&H" & Mid(nGroup, 5, 2)))
    

    sOut = sOut & Left(pOut, numDataBytes)
  Next

  Base64Decode = sOut
End Function
'Переменная, присвоение значения, вывод в сообщение результата'
dim result
result = Base64Decode("MTIzNDU=")
WScript.Echo(result)

Последний раз редактировалось DarckSol, 11-01-2016 в 11:26.


Отправлено: 11:16, 11-01-2016 | #3

Название темы: Base64 en\de_code