base64
В очередной раз надоело разбираться в "скрытых особенностях" общедоступного внешнего модуля для 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
www.bot4sale.ru/images/trash.jpeg
RSS лента комментариев этой записи