У меня есть буфер Byte[]
, который может содержать один или несколько кадров данных. Мне нужно прочитать первые байты, чтобы узнать, сколько времени занимает фактический кадр.F # соответствует началу массива
Это «нерабочая» версия о том, что я хочу сделать:
let extractFrame (buffer:byte[]) =
match buffer with
| [|head1;head2;head3;..|] when head2 < (byte)128 -> processDataFrame buffer head2
| <...others....>
| _ -> raise(new System.Exception())
В принципе, мне нужно оценить первые три байта, а затем вызвать processDataFrame
с буфером и фактической длиной рама. В зависимости от заголовков, кадр может быть данными, контролем и т. Д.
Можно ли это сделать с любым типом соответствия (списки, последовательности, ... и т. Д.)? Или мне нужно создать еще один небольшой массив с длиной всего заголовка? (Я бы хотел этого избежать).
Не было бы проще просто оценить первые три байта с помощью if/then? –
вот что я пытаюсь выяснить ... Есть много случаев, и мне было интересно, как это сделать в F # – vtortola