Current section
Files
Jump to
Current section
Files
lib/bcs/util.ex
defmodule BCS.Util do
@moduledoc false
# Base conversions for integers
@spec to_base(integer, pos_integer) :: list(integer)
def to_base(n, base) when is_integer(n) do
do_to_base(abs(n), base, [])
end
defp do_to_base(n, base, acc) when is_integer(n) do
if n > 0 do
quotient = div(n, base)
remainder = rem(n, base)
do_to_base(quotient, base, [remainder | acc])
else
acc
end
end
@spec from_base(list(integer), pos_integer) :: integer
def from_base(xs, base) do
Enum.reduce(xs, 0, fn x, acc -> acc * base + x end)
end
end