2022-09-19 01:27:48 +02:00
|
|
|
$if btoa = undefined then
|
|
|
|
|
$let btoa = defined
|
2022-10-07 09:17:31 +02:00
|
|
|
Function btoa$ (strng As String)
|
2022-05-09 12:36:52 +02:00
|
|
|
Const B64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
|
2022-10-07 09:17:31 +02:00
|
|
|
Dim c1 As _Unsigned _Byte
|
|
|
|
|
Dim c2 As _Unsigned _Byte
|
|
|
|
|
Dim c3 As _Unsigned _Byte
|
|
|
|
|
Dim t1 As _Unsigned _Byte
|
|
|
|
|
Dim t2 As _Unsigned _Byte
|
|
|
|
|
Dim t3 As _Unsigned _Byte
|
|
|
|
|
Dim t4 As _Unsigned _Byte
|
2022-05-09 12:36:52 +02:00
|
|
|
Dim i As Long
|
2022-10-07 09:17:31 +02:00
|
|
|
Dim Buffer As String
|
|
|
|
|
|
|
|
|
|
For i = 1 To Len(strng) Step 3
|
|
|
|
|
c1 = Asc(Mid$(strng, i, 1))
|
|
|
|
|
t1 = _SHR((c1), 2)
|
|
|
|
|
Buffer = Buffer + Mid$(B64, t1 + 1, 1)
|
|
|
|
|
If Len(strng) >= i + 1 Then
|
|
|
|
|
c2 = Asc(Mid$(strng, i + 1, 1))
|
|
|
|
|
t2 = (_SHL((c1 And &B00000011), 4)) Or (_SHR((c2), 4))
|
|
|
|
|
Buffer = Buffer + Mid$(B64, t2 + 1, 1)
|
|
|
|
|
Else
|
|
|
|
|
t2 = (_SHL((c1 And &B00000011), 4))
|
|
|
|
|
Buffer = Buffer + Mid$(B64, t2 + 1, 1)
|
|
|
|
|
Buffer = Buffer + "=="
|
|
|
|
|
btoa$ = Buffer
|
|
|
|
|
Exit Function
|
|
|
|
|
End If
|
|
|
|
|
If Len(strng) >= i + 2 Then
|
|
|
|
|
c3 = Asc(Mid$(strng, i + 2, 1))
|
|
|
|
|
t3 = (_SHL((c2 And &B00001111), 2)) Or (_SHR((c3), 6))
|
|
|
|
|
Buffer = Buffer + Mid$(B64, t3 + 1, 1)
|
|
|
|
|
t4 = c3 And &B00111111
|
|
|
|
|
Buffer = Buffer + Mid$(B64, t4 + 1, 1)
|
|
|
|
|
Else
|
|
|
|
|
t3 = (_SHL((c2 And &B00001111), 2))
|
|
|
|
|
Buffer = Buffer + Mid$(B64, t3 + 1, 1)
|
|
|
|
|
Buffer = Buffer + "="
|
|
|
|
|
btoa$ = Buffer
|
|
|
|
|
Exit Function
|
|
|
|
|
End If
|
|
|
|
|
Next
|
2022-05-09 12:36:52 +02:00
|
|
|
btoa$ = Buffer
|
2022-09-19 01:27:48 +02:00
|
|
|
End Function
|
|
|
|
|
$end if
|