Как разбить бинарный файл Erlang на специальную длину? - PullRequest
0 голосов
/ 06 февраля 2012

Я открываю один сокет udp и хочу разделить полученный двоичный пакет на каждые 10 байтов. Есть ли API или хороший метод? Спасибо!

1 Ответ

3 голосов
/ 06 февраля 2012

Вот один из способов сделать это:

split(Bin, LenPart) -> 
  lists:reverse(split1(Bin, LenPart, [])).

split1(Bin, LenPart, Acc) when byte_size(Bin) =< LenPart -> 
  [Bin | Acc];
split1(Bin, LenPart, Acc) -> 
  <<Part:LenPart/binary, Rest/binary>> = Bin,
  split1(Rest, LenPart, [Part | Acc]).
...