How to convert decimal value to binary value?

None of the “written code” solutions here work for numbers greater than 255.

I think this solution works for all (positive) numbers:

  def decimal_to_binary(str) when is_binary(str) do
    str
    |> String.to_integer()
    |> decimal_to_binary()
  end

  def decimal_to_binary(num) when is_integer(num) do
    binary_string = :erlang.integer_to_binary(num, 2)
    binary_string_length = String.length(binary_string)
    desired_string_length = binary_string_length + (8 - rem(binary_string_length, 8))
    String.pad_leading(binary_string, desired_string_length, "0")
  end

It could probably be neater but at least it works for numbers larger than 255.

Any improvements are very welcome!