Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
111
Task/Base64-decode-data/QB64/base64-decode-data.qb64
Normal file
111
Task/Base64-decode-data/QB64/base64-decode-data.qb64
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
Option _Explicit
|
||||
|
||||
Dim As String udata, decoded
|
||||
udata = "VG8gZXJyIGlzIGh1bWFuLCBidXQgdG8gcmVhbGx5IGZvdWwgdGhpbmdzIHVwIHlvdSBuZWVkIGEgY29tcHV0ZXIuCiAgICAtLVBhdWwgUi5FaHJsaWNo"
|
||||
|
||||
decoded = decode(udata)
|
||||
|
||||
Print udata
|
||||
Print decoded
|
||||
|
||||
Function findIndex& (value As _Unsigned _Byte)
|
||||
If Asc("A") <= value And value <= Asc("Z") Then
|
||||
findIndex = value - Asc("A")
|
||||
Exit Function
|
||||
End If
|
||||
If Asc("a") <= value And value <= Asc("z") Then
|
||||
findIndex = value - Asc("a") + 26
|
||||
Exit Function
|
||||
End If
|
||||
If Asc("0") <= value And value <= Asc("9") Then
|
||||
findIndex = value - Asc("0") + 52
|
||||
Exit Function
|
||||
End If
|
||||
If value = Asc("+") Then
|
||||
findIndex = 62
|
||||
Exit Function
|
||||
End If
|
||||
If value = Asc("/") Then
|
||||
findIndex = 63
|
||||
Exit Function
|
||||
End If
|
||||
findIndex = -1
|
||||
End Function
|
||||
|
||||
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
|
||||
Dim As Long acc
|
||||
Dim As String sink
|
||||
strend = length
|
||||
While it <> strend
|
||||
Dim As _Unsigned _Byte b1, b2, b3, b4
|
||||
it = it + 1
|
||||
b1 = Asc(Mid$(source, it, 1))
|
||||
sink = sink + Mid$(Base64, _SHR(b1, 2), 1)
|
||||
acc = _SHL(b1 And &H3, 4)
|
||||
If it <> strend Then
|
||||
it = it + 1
|
||||
b2 = Asc(Mid$(source, it, 1))
|
||||
acc = acc Or _SHR(b2, 4)
|
||||
sink = sink + Mid$(Base64, acc, 1)
|
||||
acc = _SHL(b2 And &HF, 2)
|
||||
If it <> strend Then
|
||||
it = it + 1
|
||||
b3 = Asc(Mid$(source, it, 1))
|
||||
acc = acc Or _SHR(b3, 6)
|
||||
sink = sink + Mid$(Base64, acc, 1)
|
||||
sink = sink + Mid$(Base64, b3 And &H3F, 1)
|
||||
Else
|
||||
sink = sink + Mid$(Base64, acc, 1)
|
||||
sink = sink + "="
|
||||
End If
|
||||
Else
|
||||
sink = sink + Mid$(Base64, acc, 1)
|
||||
sink = sink + "="
|
||||
sink = sink + "="
|
||||
End If
|
||||
Wend
|
||||
encode = sink
|
||||
End Function
|
||||
|
||||
Function decode$ (source As String)
|
||||
Dim As _Unsigned _Integer64 length: length = Len(source)
|
||||
Dim As _Unsigned _Integer64 it, strend
|
||||
Dim As Long acc
|
||||
Dim As String sink
|
||||
strend = length
|
||||
While it <> strend
|
||||
Dim As _Unsigned _Byte b1, b2, b3, b4
|
||||
it = it + 1
|
||||
b1 = Asc(Mid$(source, it, 1))
|
||||
it = it + 1
|
||||
b2 = Asc(Mid$(source, it, 1))
|
||||
it = it + 1
|
||||
b3 = Asc(Mid$(source, it, 1))
|
||||
it = it + 1
|
||||
b4 = Asc(Mid$(source, it, 1))
|
||||
Dim As Long i1, i2
|
||||
i1 = findIndex(b1)
|
||||
i2 = findIndex(b2)
|
||||
acc = _SHL(i1, 2)
|
||||
acc = acc Or _SHR(i2, 4)
|
||||
sink = sink + Chr$(acc)
|
||||
If b3 <> Asc("=") Then
|
||||
Dim As Long i3
|
||||
i3 = findIndex(b3)
|
||||
acc = _SHL(i2 And &HF, 4)
|
||||
acc = acc Or _SHR(i3, 2)
|
||||
sink = sink + Chr$(acc)
|
||||
If b4 <> Asc("=") Then
|
||||
Dim As Long i4
|
||||
i4 = findIndex(b4)
|
||||
acc = _SHL(i3 And &H3, 6)
|
||||
acc = acc Or i4
|
||||
sink = sink + Chr$(acc)
|
||||
End If
|
||||
End If
|
||||
Wend
|
||||
decode = sink
|
||||
End Function
|
||||
Loading…
Add table
Add a link
Reference in a new issue