3

我想查找模式并按我拥有的 HEX 文件上的出现次数对它们进行排序。

我不是在寻找一些特定的模式,只是为了对那里发生的事件进行一些统计并对其进行排序。

DB0DDAEEDAF7DAF5DB1FDB1DDB20DB1BDAFCDAFBDB1FDB18DB23DB06DB21DB15DB25DB1DDB2EDB36DB43DB59DB32DB28DB2ADB46DB6FDB32DB44DB40DB50DB87DBB0DBA1DBABDBA0DB9ADBA6DBACDBA0DB96DB95DBB7DBCFDBCBDBD6DB9CDBB5DB9DDB9FDBA3DB88DB89DB93DBA5DB9CDBC1DBC1DBC6DBC3DBC9DBB3DBB8DBB6DBC8DBA8DBB6DBA2DB98DBA9DBB9DBDBDBD5DBD9DBC3DB9BDBA2DB84DB83DB7DDB6BDB58DB4EDB42DB16DB0DDB01DB02DAFCDAE9DAE5DAD9DAE2DAB7DA9BDAA6DA9EDAAADAC9DACADAC4DA92DA90DA84DA89DA93DAA9DA8CDA7FDA62DA53DA6EDA

这是十六进制文件的摘录,作为一个例子,我想得到:

XX 次 BDBDBD

XX 次 B93D

有没有办法挖掘文件以生成该输出?

4

3 回答 3

2

当然。使用滑动窗口来创建计数(该链接适用于 Perl,但它似乎足以理解算法)。您的模式被命名为N-grams。不过,您将不得不限制最大模式。

于 2009-12-14T21:45:07.583 回答
1

这是一个非常经典的 CS 问题。一般来说,代码实现起来并不简单,因为它至少需要一个完整的序列解析,并且根据您的效率和内存/处理器限制,可能需要几个。见这里

您将需要以某种方式对输入字符串进行分区,以确保您在其中获得良好的子序列。

如果有特定问题,我们可能会提供更多帮助,但一般策略在上面的 Wikipedia 文章中。

于 2009-12-14T21:44:36.803 回答
0

您可以使用正则表达式来制作要搜索的模式。

所需的正则表达式非常简单。只需使用您要搜索的确切短语。然后在您使用的语言中应该有一个正则表达式函数(您没有指定)可以计算匹配数。

用它来创建一个简单的计数器。

于 2009-12-14T21:35:01.217 回答