base64

Опубликовано в QLua

В очередной раз надоело разбираться в "скрытых особенностях" общедоступного внешнего модуля для Lua. На этот раз раздражителем стал простецкий Base64, выполняющий одноимённые преобразования. Хочешь сделать хорошо - сделай сам.

base64 = {}
local b = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
-- encoding ----------------------------------------------------------
function base64.encode(data)
   return ((data:gsub(".", function(x)
      local r,b= "",x:byte()
      for i = 8,1,-1 do
         r = r..(b%2^i-b%2^(i-1) > 0 and "1" or "0")
      end
      return r;
   end).."0000"):gsub("%d%d%d?%d?%d?%d?", function(x)
      if (#x < 6) then return "" end
      local c = 0
      for i = 1,6 do
         c = c+(x:sub(i,i)== "1" and 2^(6-i) or 0)
      end
      return b:sub(c+1,c+1)
   end)..({ "", "==", "=" })[#data%3+1])
end -- decoding --------------------------------------------------------------
function base64.decode(data)
   data = string.gsub(data, "[^" .. b .. "=]","")
   return (data:gsub(".", function(x)
      if (x == "=") then
         return ""
      end
      local r,f = "",(b:find(x)-1)
      for i = 6,1,-1 do
         r = r .. (f%2^i-f%2^(i-1) > 0 and "1" or "0")
      end
      return r;
   end):gsub("%d%d%d?%d?%d?%d?%d?%d?", function(x)
      if (#x ~= 8) then
         return ""
      end
      local c = 0
      for i = 1,8 do
         c = c+(x:sub(i,i)== "1" and 2^(8-i) or 0)
      end
      return string.char(c)
   end))
end

Комментарии   

# Otokar 12.10.2013 15:08
СПС за Лестницу в небо!!!!
# Otokar 12.10.2013 15:08
И за скрипт тоже СПС.
# admin 13.10.2013 20:26
Правильная музыка - обязательный элемент среды разработки :lol:

www.bot4sale.ru/images/trash.jpeg

Недостаточно прав для комментирования

Архив QLua