Advertisement
ktdm

num_transform.lua -- number manipulation library

Sep 18th, 2017
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.11 KB | None | 0 0
  1. local lib
  2. lib = {
  3.     digitsToNum = function(digits, base)
  4.         local num, k = 0, 1
  5.         for i = #digits, 1, -1 do
  6.             if digits[i] >= base then
  7.                 error("\number transfromation error: could not transfrom number "
  8.                 ..tostring(digits[i]).." to base "..tostring(base))
  9.             end
  10.             num = num + digits[i] * k
  11.             k = k * base
  12.         end
  13.         return num
  14.     end
  15.    ,getNumberLength = function(num, base)
  16.         if num == 0 then return 0 end
  17.         if num < 0 then num = -num end
  18.         return math.floor(math.log(num) / math.log(base)) + 1
  19.     end
  20.    ,toBase = function(num, base, forcedLength)
  21.         local length, t = lib.getNumberLength(num, base), {}
  22.         if forcedLength ~= nil then
  23.             for i = 1, forcedLength do t[i] = 0 end
  24.         end
  25.         local l = math.max(forcedLength or 0, length)
  26.         for i = 1, length do
  27.             local v = num % base
  28.             t[l - i + 1] = v
  29.             --if num < base then break end
  30.             num = math.floor(num / base)
  31.         end
  32.         return t
  33.     end
  34. }
  35. return lib
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement