Вы использовали правильный метод.
binary_to_list (Binary) -> [char ()]
Возвращает список целых чисел, которые соответствуютбайт двоичного.
В Erlang нет типа строки: http://www.erlang.org/doc/reference_manual/data_types.html#id63119. Консоль просто отображает списки в строковом представлении в качестве любезности, если все элементы находятся в диапазоне ASCII для печати.
Вы должны прочитать документацию Эрланга "Битовые синтаксические выражения" , чтобы понять, как работать с двоичными файлами.
Не преобразовывайте весь двоичный файл в список, если он вам не нужен в представлении списка!
Чтобы извлечь первые три байта, вы можете использовать
<<A, B, C, Rest/binary>> = <<"aaa","bbb","ccc">>.
Если вы хотите перебрать двоичные данные, вы можете использовать двоичное понимание.
<< <<(F(X))>> || <<X>> <= <<"aaa","bbb","ccc">> >>.
Также возможно сопоставление с образцом:
test(<<A, Tail/binary>>, Accu) -> test(Tail, Accu+A);
test(_, Accu) -> Accu.
882 = test(<<"aaa","bbb","ccc">>, 0).
Даже для чтенияодин символ UTF-8 одновременно.Чтобы преобразовать двоичную строку UTF-8 в формат "списка кодовых точек" Эрланга, вы можете использовать:
test(<<A/utf8, Tail/binary>>, Accu) -> test(Tail, [A|Accu]);
test(_, Accu) -> lists:reverse(Accu).
[97,97,97,600,99,99,99] = test(<<"aaa", 16#0258/utf8, "ccc">>, "").
(обратите внимание, что `<<"aaa","bbb","ccc">> = <<"aaabbbccc">>
. На самом деле не используйтепоследний код пропущен, но связанный метод.)