Asummonster

e2 base64

Nov 4th, 2020
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.21 KB | None | 0 0
  1. @persist BDict:table Dict:string
  2. Dict = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
  3. function string base64Encode(In:string)
  4. {
  5.     local Out = ""
  6.     while (In:length())
  7.     {
  8.         local B1 = 64
  9.         local B2 = 64
  10.         local B3 = 64
  11.         local B4 = 64
  12.  
  13.         local N1 = toByte(In:sub(1, 1))
  14.         local N2 = toByte(In:sub(2, 2))
  15.         local N3 = toByte(In:sub(3, 3))
  16.         In = In:sub(4)
  17.  
  18.         B1 = (N1 && 252) >> 2
  19.         if (N2 >= 0)
  20.         {
  21.             B2 = ((N1 && 3) << 4) + ((N2 && 240) >> 4)
  22.             if (N3 >= 0)
  23.             {
  24.                 B3 = ((N2 && 15) << 2) + ((N3 && 192) >> 6)
  25.                 B4 = (N3 && 63)
  26.             }
  27.             else
  28.             {
  29.                 B3 = (N2 & 15) << 2
  30.             }
  31.         }
  32.         else
  33.         {
  34.             B2 = (N1 && 3) << 4
  35.         }
  36.         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)
  37.     }
  38.     return Out
  39. }
  40. function string base64Decode(In:string)
  41. {
  42.     for (A = 0, 63)
  43.     {
  44.         BDict[Dict:sub(A+1, A+1), number] = A
  45.     }
  46.     BDict["", number] = -1
  47.     BDict["=", number] = -1
  48.     local Out = ""
  49.     while (perf() & In:length())
  50.     {
  51.         local B1 = BDict[In:sub(1, 1), number]
  52.         local B2 = BDict[In:sub(2, 2), number]
  53.         local B3 = BDict[In:sub(3, 3), number]
  54.         local B4 = BDict[In:sub(4, 4), number]
  55.        
  56.         In = In:sub(5)
  57.        
  58.         local N1 = -1
  59.         local N2 = -1
  60.         local N3 = -1
  61.        
  62.         if (B2 >= 0)
  63.         {
  64.             N1 = (B1 << 2) + ((B2 && 48) >> 4)
  65.             if (B3 >= 0)
  66.             {
  67.                 N2 = ((B2 && 15) << 4) + ((B3 && 60) >> 2)
  68.                 if (B4 >= 0)
  69.                 {
  70.                     N3 = ((B3 && 3) << 6) + (B4)
  71.                 }
  72.                 else
  73.                 {
  74.                     N3 = (B3 && 15) << 6
  75.                 }
  76.             }
  77.             else
  78.             {
  79.                 N2 = ((B2 && 15) << 4)
  80.             }
  81.         }
  82.         else
  83.         {
  84.             N1 = B1 << 2
  85.         }
  86.         Out += toChar(N1) + (N2 >= 0 ? (toChar(N2) + (N3 >= 0 ? toChar(N3) : "")) : "")
  87.     }
  88.     return Out
  89. }
Add Comment
Please, Sign In to add comment