私はハスケルにとっては新しく、最初のプロジェクトは捕捉されたWLANパケットを解析することです。そのようなパケットを解析する際の共通のパターンは、ヘッダフィールドが残りのバイトの構造を定義することである。ヘッダ内のフラグフィールドは、(ビットマップであることができる)パケットに含まれるものペイロード(複数可)を指定ハスケルでのバイナリデータのモナド解析
header + [payload A | payload B | ..]
:一般的な例として、パケットは次のようにフォーマットすることができます。このフォーマットの具体例については、radiotapをご覧ください。ペイロードA
とB
の存在がヘッダで定義されている私の場合には適用できないと思われるしかし
parseAll = do
hdr <- parseHeader
pa <- parsePayloadA
pb <- parsePayloadB
:
A similar threadはちょうどこのようparse
一連の操作を使用することを示唆しています。換言すれば、データ解析の制御フローは、前の解析結果に従う必要がある。この種のパターンでバイナリデータを解析する一般的な方法があるのであれば、私は理解したいと思いますか?
ありがとうございました。この場合、「ペイロード」のタイプは何でしょうか? – liu3tao
これは、2つの可能なペイロードを持っていると仮定しています。 'data Payload = PayloadA A |ペイロードB B – Cactus