2

考虑以数据段组织的二进制文件,其中前 4 个字节是段类型,接下来的 4 个字节是段长度,其余字节是原始数据。我可以解析第一段,如:

named!(my_parser<&[u8], SomethingParsed>, do_parse!(
    segment_type: take!(4)      >>
    segment_length: be_u32      >>
    segment_data: take!(segment_length) >>

    (SomethingParsed {segments: ?})
))

如何重复该步骤直到到达文件末尾?

4

1 回答 1

1

您可以用于many0应用解析器 0 次或更多次(或者many1如果您需要至少一次通过)。

named!(my_iterated_parser<&[u8], Vec<SomethingParsed>>, many0!(my_parser));

参考

于 2019-04-26T17:54:25.093 回答