我想找到模式,并根据我的HEX文件中的出现次数对它们进行排序。
我不是在寻找一些特定的模式,只是为了对那里发生的事件进行一些统计并对它们进行排序。
DB0DDAEEDAF7DAF5DB1FDB1DDB20DB1BDAFCDAFBDB1FDB18DB23DB06DB21DB15DB25DB1DDB2EDB36DB43DB59DB32DB28DB2ADB46DB6FDB32DB44DB40DB50DB87DBB0DBA1DBABDBA0DB9ADBA6DBACDBA0DB96DB95DBB7DBCFDBCBDBD6DB9CDBB5DB9DDB9FDBA3DB88DB89DB93DBA5DB9CDBC1DBC1DBC6DBC3DBC9DBB3DBB8DBB6DBC8DBA8DBB6DBA2DB98DBA9DBB9DBDBDBD5DBD9DBC3DB9BDBA2DB84DB83DB7DDB6BDB58DB4EDB42DB16DB0DDB01DB02DAFCDAE9DAE5DAD9DAE2DAB7DA9BDAA6DA9EDAAADAC9DACADAC4DA92DA90DA84DA89DA93DAA9DA8CDA7FDA62DA53DA6EDA
这是HEX文件的摘录,作为一个例子,我想得到:
发生了两次BDBDBD
B93D发生XX次
有没有办法挖掘文件以生成输出?
答案 0 :(得分:2)
不确定。使用sliding window创建计数(链接用于Perl,但似乎通常足以理解算法)。您的模式名为N-grams。但是,您必须限制最大模式。
答案 1 :(得分:1)
这是一个非常经典的CS问题。一般来说,代码实现起来并不重要,因为它需要至少一个完整的序列解析,并且根据您的效率和内存/处理器约束可能需要几个。请参阅here。
您需要以某种方式对输入字符串进行分区,以确保在其中获得良好的子序列。
如果存在特定问题,我们可能会提供更多帮助,但一般策略在上面的维基百科文章中。
答案 2 :(得分:0)
您可以使用正则表达式创建搜索模式。
所需的正则表达式非常简单。只需使用您正在搜索的确切短语。然后应该有你正在使用的语言(你没有指定)的正则表达式函数,它可以计算匹配的数量。
用它来创建一个简单的计数器。