Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local lib
- lib = {
- digitsToNum = function(digits, base)
- local num, k = 0, 1
- for i = #digits, 1, -1 do
- if digits[i] >= base then
- error("\number transfromation error: could not transfrom number "
- ..tostring(digits[i]).." to base "..tostring(base))
- end
- num = num + digits[i] * k
- k = k * base
- end
- return num
- end
- ,getNumberLength = function(num, base)
- if num == 0 then return 0 end
- if num < 0 then num = -num end
- return math.floor(math.log(num) / math.log(base)) + 1
- end
- ,toBase = function(num, base, forcedLength)
- local length, t = lib.getNumberLength(num, base), {}
- if forcedLength ~= nil then
- for i = 1, forcedLength do t[i] = 0 end
- end
- local l = math.max(forcedLength or 0, length)
- for i = 1, length do
- local v = num % base
- t[l - i + 1] = v
- --if num < base then break end
- num = math.floor(num / base)
- end
- return t
- end
- }
- return lib
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement