Base64 decode data: Difference between revisions

Line 1,032:
</pre>
=={{header|QB64}}==
<lang vb>Option _Explicit
Option _Explicit
 
Dim Shared As String Base64(0 To 63)
Dim As _Unsigned Integer x
Restore BASE64
For x = 0 To 63
Read Base64(x)
Next
 
Dim As String udata, decoded
Line 1,049 ⟶ 1,041:
Print udata
Print decoded
 
BASE64:
Data "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"
Data "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"
Data "0","1","2","3","4","5","6","7","8","9","+","/"
 
Function findIndex& (value As _Unsigned _Byte)
Line 1,080 ⟶ 1,067:
 
Function encode$ (source As String)
Dim As String Base64: Base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
Dim As _Unsigned _Integer64 length: length = Len(source)
Dim As _Unsigned _Integer64 it, strend
Line 1,089 ⟶ 1,077:
it = it + 1
b1 = Asc(Mid$(source, it, 1))
sink = sink + Base64Mid$(Base64, _SHR(b1, 2), 1)
acc = _SHL(b1 And &H3, 4)
If it <> strend Then
Line 1,095 ⟶ 1,083:
b2 = Asc(Mid$(source, it, 1))
acc = acc Or _SHR(b2, 4)
sink = sink + Base64Mid$(Base64, acc, 1)
acc = _SHL(b2 And &HF, 2)
If it <> strend Then
Line 1,101 ⟶ 1,089:
b3 = Asc(Mid$(source, it, 1))
acc = acc Or _SHR(b3, 6)
sink = sink + Base64Mid$(Base64, acc, 1)
sink = sink + Base64Mid$(Base64, b3 And &H3F, 1)
Else
sink = sink + Base64Mid$(Base64, acc, 1)
sink = sink + "="
End If
Else
sink = sink + Base64Mid$(Base64, acc, 1)
sink = sink + "="
sink = sink + "="
Line 1,154 ⟶ 1,142:
Wend
decode = sink
End Function</lang>
</lang>
{{out}}
<pre>