Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @persist BDict:table Dict:string
- Dict = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
- function string base64Encode(In:string)
- {
- local Out = ""
- while (In:length())
- {
- local B1 = 64
- local B2 = 64
- local B3 = 64
- local B4 = 64
- local N1 = toByte(In:sub(1, 1))
- local N2 = toByte(In:sub(2, 2))
- local N3 = toByte(In:sub(3, 3))
- In = In:sub(4)
- B1 = (N1 && 252) >> 2
- if (N2 >= 0)
- {
- B2 = ((N1 && 3) << 4) + ((N2 && 240) >> 4)
- if (N3 >= 0)
- {
- B3 = ((N2 && 15) << 2) + ((N3 && 192) >> 6)
- B4 = (N3 && 63)
- }
- else
- {
- B3 = (N2 & 15) << 2
- }
- }
- else
- {
- B2 = (N1 && 3) << 4
- }
- Out += Dict:sub(B1+1, B1+1) + Dict:sub(B2+1, B2+1) + Dict:sub(B3+1, B3+1) + Dict:sub(B4+1, B4+1)
- }
- return Out
- }
- function string base64Decode(In:string)
- {
- for (A = 0, 63)
- {
- BDict[Dict:sub(A+1, A+1), number] = A
- }
- BDict["", number] = -1
- BDict["=", number] = -1
- local Out = ""
- while (perf() & In:length())
- {
- local B1 = BDict[In:sub(1, 1), number]
- local B2 = BDict[In:sub(2, 2), number]
- local B3 = BDict[In:sub(3, 3), number]
- local B4 = BDict[In:sub(4, 4), number]
- In = In:sub(5)
- local N1 = -1
- local N2 = -1
- local N3 = -1
- if (B2 >= 0)
- {
- N1 = (B1 << 2) + ((B2 && 48) >> 4)
- if (B3 >= 0)
- {
- N2 = ((B2 && 15) << 4) + ((B3 && 60) >> 2)
- if (B4 >= 0)
- {
- N3 = ((B3 && 3) << 6) + (B4)
- }
- else
- {
- N3 = (B3 && 15) << 6
- }
- }
- else
- {
- N2 = ((B2 && 15) << 4)
- }
- }
- else
- {
- N1 = B1 << 2
- }
- Out += toChar(N1) + (N2 >= 0 ? (toChar(N2) + (N3 >= 0 ? toChar(N3) : "")) : "")
- }
- return Out
- }
Add Comment
Please, Sign In to add comment