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!






















