Привет, это мой первый пост, надеюсь, у вас все хорошо. Так что я только начинаю erlang, и я столкнулся с проблемой, я не знаю, как ее решить.
Итак, у меня есть двоичный файл, который я получаю в виде
<<56, 23, 67, 34, 45, 78, 01, 54, 67, 87, 45, 53, 01, 34, 56, 78>>
Моя цель - разбить его на подсписок (или двоичный, если он более эффективен) на основе 01.
Например, вышеприведенное должно выглядеть примерно так:
<<56, 23, 67, 34, 45, 78>> <<54, 67, 87, 45, 53>> <<34, 56, 78>>
-или-
[[56, 23, 67, 34, 45, 78], [54, 67, 87, 45, 53], [34, 56, 78]]
01 - это разделительный тег, его не нужно включать в окончательный вывод.
Я пробовал что-то как таковое: (ПОЖАЛУЙСТА, не обращайте внимания, если есть лучший способ)
parse1([]) -> [];
parse1(1) -> io:format("SOHSOHSOHSOHSOHSSOHSOHS");
parse1(Reply) -> parse1({Reply, []});
parse1({Reply, nxtParse}) ->
[H | T] = Reply,
case H of
_ when H > 1 ->
[H | nxtParse],
io:format("Reply 1 = ~p~n", [H]),
parse1({T, nxtParse});
_ when H == 1 ->
io:format("SOHSOHSOHSOHSOHSSOHSOHS");
[] ->
ok
end.
Это не совсем чисто и совсем не похоже на то, что пишут профессионалы. Я уверен, что я чмокаю головой "дух", когда кто-то подсказывает мне.
Я понимаю, что определенно существует более одного решения, но какое ЛУЧШЕЕ. Кажется, у ERL так много BIF и способов сделать что-то, просто я должен найти свой путь, я думаю.
Спасибо за помощь, ребята
-B