[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
网上早有人写好了,搜索一下就能得到:
  1. WScript.Echo  utf8to16(Base64Decode("5om55aSE55CG5LmL5a62"))
  2. Function utf8to16(str)
  3.     Dim out, i, len1, c, t
  4.     Dim char2, char3
  5.     out = ""
  6.     len1 = Len(str)
  7.     i = 0
  8.     While (i < len1)
  9.         c = Asc(Mid(str, i + 1, 1))
  10.         i = i + 1
  11.         t = c \ 16
  12.         If t >= 0 And t <= 7 Then
  13.             out = out + Mid(str, i, 1)
  14.         ElseIf t = 12 Or t = 13 Then
  15.             char2 = Asc(Mid(str, i + 1, 1))
  16.             i = i + 1
  17.             out = out + Chr(((c And 31) * 64) Or (char2 And 31))
  18.         ElseIf t = 14 Then
  19.             char2 = Asc(Mid(str, i + 1, 1))
  20.             i = i + 1
  21.             char3 = Asc(Mid(str, i + 1, 1))
  22.             i = i + 1
  23.             out = out + ChrW(((c And 15) * 4096) Or ((char2 And 63) * 64) Or ((char3 And 63)))
  24.         End If
  25.     Wend
  26.     utf8to16 = out
  27. End Function
  28. ' Decodes a base-64 encoded string (BSTR type).
  29. ' 1999 - 2004 Antonin Foller, http://www.motobit.com
  30. ' 1.01 - solves problem with Access And 'Compare Database' (InStr)
  31. Function Base64Decode(ByVal base64String)
  32.   'rfc1521
  33.   '1999 Antonin Foller, Motobit Software, http://Motobit.cz
  34.   Const Base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
  35.   Dim dataLength, sOut, groupBegin
  36.   
  37.   'remove white spaces, If any
  38.   base64String = Replace(base64String, vbCrLf, "")
  39.   base64String = Replace(base64String, vbTab, "")
  40.   base64String = Replace(base64String, " ", "")
  41.   
  42.   'The source must consists from groups with Len of 4 chars
  43.   dataLength = Len(base64String)
  44.   If dataLength Mod 4 <> 0 Then
  45.     Err.Raise 1, "Base64Decode", "Bad Base64 string."
  46.     Exit Function
  47.   End If
  48.   
  49.   ' Now decode each group:
  50.   For groupBegin = 1 To dataLength Step 4
  51.     Dim numDataBytes, CharCounter, thisChar, thisData, nGroup, pOut
  52.     ' Each data group encodes up To 3 actual bytes.
  53.     numDataBytes = 3
  54.     nGroup = 0
  55.     For CharCounter = 0 To 3
  56.       ' Convert each character into 6 bits of data, And add it To
  57.       ' an integer For temporary storage.  If a character is a '=', there
  58.       ' is one fewer data byte.  (There can only be a maximum of 2 '=' In
  59.       ' the whole string.)
  60.       thisChar = Mid(base64String, groupBegin + CharCounter, 1)
  61.       If thisChar = "=" Then
  62.         numDataBytes = numDataBytes - 1
  63.         thisData = 0
  64.       Else
  65.         thisData = InStr(1, Base64, thisChar, vbBinaryCompare) - 1
  66.       End If
  67.       If thisData = -1 Then
  68.         Err.Raise 2, "Base64Decode", "Bad character In Base64 string."
  69.         Exit Function
  70.       End If
  71.       nGroup = 64 * nGroup + thisData
  72.     Next
  73.    
  74.     'Hex splits the long To 6 groups with 4 bits
  75.     nGroup = Hex(nGroup)
  76.    
  77.     'Add leading zeros
  78.     nGroup = String(6 - Len(nGroup), "0") & nGroup
  79.    
  80.     'Convert the 3 byte hex integer (6 chars) To 3 characters
  81.     pOut = Chr(CByte("&H" & Mid(nGroup, 1, 2))) + _
  82.       Chr(CByte("&H" & Mid(nGroup, 3, 2))) + _
  83.       Chr(CByte("&H" & Mid(nGroup, 5, 2)))
  84.    
  85.     'add numDataBytes characters To out string
  86.     sOut = sOut & Left(pOut, numDataBytes)
  87.   Next
  88.   Base64Decode = sOut
  89. End Function
复制代码

TOP

返回列表