Base64 decode data: Difference between revisions

Content added Content deleted
Line 1,032: Line 1,032:
</pre>
</pre>
=={{header|QB64}}==
=={{header|QB64}}==
<lang vb>
<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
Dim As String udata, decoded
Line 1,049: Line 1,041:
Print udata
Print udata
Print decoded
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)
Function findIndex& (value As _Unsigned _Byte)
Line 1,080: Line 1,067:


Function encode$ (source As String)
Function encode$ (source As String)
Dim As String Base64: Base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
Dim As _Unsigned _Integer64 length: length = Len(source)
Dim As _Unsigned _Integer64 length: length = Len(source)
Dim As _Unsigned _Integer64 it, strend
Dim As _Unsigned _Integer64 it, strend
Line 1,089: Line 1,077:
it = it + 1
it = it + 1
b1 = Asc(Mid$(source, it, 1))
b1 = Asc(Mid$(source, it, 1))
sink = sink + Base64(_SHR(b1, 2))
sink = sink + Mid$(Base64, _SHR(b1, 2), 1)
acc = _SHL(b1 And &H3, 4)
acc = _SHL(b1 And &H3, 4)
If it <> strend Then
If it <> strend Then
Line 1,095: Line 1,083:
b2 = Asc(Mid$(source, it, 1))
b2 = Asc(Mid$(source, it, 1))
acc = acc Or _SHR(b2, 4)
acc = acc Or _SHR(b2, 4)
sink = sink + Base64(acc)
sink = sink + Mid$(Base64, acc, 1)
acc = _SHL(b2 And &HF, 2)
acc = _SHL(b2 And &HF, 2)
If it <> strend Then
If it <> strend Then
Line 1,101: Line 1,089:
b3 = Asc(Mid$(source, it, 1))
b3 = Asc(Mid$(source, it, 1))
acc = acc Or _SHR(b3, 6)
acc = acc Or _SHR(b3, 6)
sink = sink + Base64(acc)
sink = sink + Mid$(Base64, acc, 1)
sink = sink + Base64(b3 And &H3F)
sink = sink + Mid$(Base64, b3 And &H3F, 1)
Else
Else
sink = sink + Base64(acc)
sink = sink + Mid$(Base64, acc, 1)
sink = sink + "="
sink = sink + "="
End If
End If
Else
Else
sink = sink + Base64(acc)
sink = sink + Mid$(Base64, acc, 1)
sink = sink + "="
sink = sink + "="
sink = sink + "="
sink = sink + "="
Line 1,154: Line 1,142:
Wend
Wend
decode = sink
decode = sink
End Function
End Function</lang>
</lang>
{{out}}
{{out}}
<pre>
<pre>