Public Sub Base64Decode(S As String) As String
Dim base64chars As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
Dim P,R = "" As String
#IF B4J or B4A
Dim Ob As JavaObject = S 'ignore
S=Ob.RunMethod("replaceAll",Array As Object("[^ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=]",""))
#ELSE
' Don't known - Working Progress
#End If
If S.CharAt(S.Length-1)="=" Then
If S.CharAt(S.Length-2)="=" Then
p="AA"
Else
P="A"
End If
Else
P=""
End If
S=S.SubString2(0,S.Length-P.Length) & P
For C = 0 To S.Length-1 Step 4
Try
Dim n As Int = Bit.ShiftLeft(base64chars.IndexOf(S.CharAt(C)),18) + Bit.ShiftLeft(base64chars.IndexOf(S.CharAt(C+1)),12) + Bit.ShiftLeft(base64chars.IndexOf(S.CharAt(C+2)),6)+ base64chars.IndexOf(S.CharAt(C+3))
r = r & Chr(Bit.And(Bit.ShiftRight(n,16),0xFF)) & Chr(Bit.And(Bit.ShiftRight(n,8),0xFF)) & Chr(Bit.And(n,0xFF))
Catch
Log("Position: " & C)
End Try
Next
Return R.SubString2(0, R.Length - P.Length)
End Sub