local module = {}
local characters = {
[0] = "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
"!", "#", "$", "%", "|", "'", "(",")", "*", "+", ".", "/", ":", ";", "<", "=", ">", "?", "@", "[", "]", "^", "_", "`", "{", "|", "}", "~"
}
local numbers = {["0"] = 0}
for i, character in ipairs(characters) do numbers[character] = i end
local base = #characters + 1
module.Encode = function(value)
if value == 0 then return "0" end
local text = ""
if value < 0 then text = "-" value = -value end
while value > 0 do
text = text .. characters[value % base]
value = math.floor(value / base)
end
return text
end
module.Decode = function(value)
local number = 0
local power = 1
for character in value:gmatch(".") do
if character == "-" then
power = -power
else
number += numbers[character] * power
power *= base
end
end
return number
end
return module