我有一个约700 MB的二进制文件(非文本数据);我想做的是搜索整个文件中随机位置出现的特定字节模式。例如0x? 0x? 0x55 0x? 0x? 0x55 0x? 0x? 0x55 0x? 0x? 0x55
等依序为50个左右的字节。我要搜索的模式是一个序列,两个随机字节,每两个字节出现0x55。
也就是说,搜索以0x55为分隔符的文件中存储的表,然后保存表中包含的数据或对其进行其他操作。
最好的选择是一次简单地遍历每个单独的字节,然后向前查看两个字节以查看值是否为0x55,如果是,则一次又一次向前搜索以确认该位置存在表?
加载整个东西?讨好?缓冲区块,一次搜索一个字节?
使用C或C++浏览此大文件并找到模式的最佳方法是什么?
最佳答案
对于regular expression匹配器或deterministic finite automaton来说,这听起来很棒。这些都是高功能工具,旨在满足您的要求,如果您可以随意使用它们,那么进行此类搜索应该不会有太大的麻烦。在C++中,考虑研究Boost.Regex库,该库应该具有将这个问题解决的所有功能。