Строка не может использоваться внутри двоичного выражения без преобразования. Вам необходимо преобразовать строку в двоичный файл, используя list_to_binary(S)
.
Я бы порекомендовал следующее выражение:
my_conv(S, Start, End) ->
list_to_binary(<<Start:8, End:8>>, S]).
(Обратите внимание, что list_to_binary/1
фактически принимает глубокий список ввода-вывода, а не только чистую строку).
Если вы намереваетесь заполнить ваш двоичный файл до 1024 байтов (или 1040, включая ваши новые строки), вы можете сделать это позже:
my_conv(S, Start, End) ->
pad(1040, list_to_binary(<<Start:8, End:8>>, S])).
pad(Width, Binary) ->
case Width = byte_size(Binary) of
N when N =< 0 -> Binary;
N -> <<Binary/binary, 0:(N*8)>>
end.