Soo,i made this for myself, but i wan’t to share this tool, it helped me with making game and data stores, because it makes large numbers 50% less characters than normal
local serialized = mod.Serialize(103898328932) -- returned 4 character less string
local deserialized = mod.Deserialize(serialized) -- returned number at good precision only losing last 2
print(serialized)
print(deserialized)
here is a module code, and here is link: Module
local module = {}
local function RoundTo(number:number,points:number):number
return math.floor(number*10^points)/10^points
end
function module.Serialize(number:number):string
local toReturn = ""
for i = 1, 100 do
if number < 10000 then
toReturn = "10/"..RoundTo(math.log10(number),4)
else
toReturn = "10/"..RoundTo(math.log10(number),2)
end
end
return toReturn
end
function module.Deserialize(str:string):number
local splitted = str:split("/")
local base = splitted[1]
local power = splitted[2]
return math.ceil(base^power)
end
return module