3 votes

Trouver des motifs HEX et le nombre d'occurrences

J'aimerais trouver des modèles et les trier par nombre d'occurrences dans un fichier HEX que je possède.

Je ne cherche pas à trouver un modèle spécifique, mais simplement à établir des statistiques sur les événements qui s'y produisent et à les classer.

DB0DDAEEDAF7DAF5DB1FDB1DDB20DB1BDAFCDAFBDB1FDB18DB23DB06DB21DB15DB25DB1DDB2EDB36DB43DB59DB32DB28DB2ADB46DB6FDB32DB44DB40DB50DB87DBB0DBA1DBABDBA0DB9ADBA6DBACDBA0DB96DB95DBB7DBCFDBCBDBD6DB9CDBB5DB9DDB9FDBA3DB88DB89DB93DBA5DB9CDBC1DBC1DBC6DBC3DBC9DBB3DBB8DBB6DBC8DBA8DBB6DBA2DB98DBA9DBB9DBDBDBD5DBD9DBC3DB9BDBA2DB84DB83DB7DDB6BDB58DB4EDB42DB16DB0DDB01DB02DAFCDAE9DAE5DAD9DAE2DAB7DA9BDAA6DA9EDAAADAC9DACADAC4DA92DA90DA84DA89DA93DAA9DA8CDA7FDA62DA53DA6EDA

C'est un extrait du fichier HEX, et à titre d'exemple j'aimerais obtenir :

XX occurrences de BDBDBD

XX occurrences de B93D

Existe-t-il un moyen d'extraire le fichier pour générer cette sortie ?

2voto

Yuval F Points 15248

Bien sûr. Utilisez un fenêtre coulissante pour créer les comptes (Le lien est pour Perl, mais il semble assez général pour comprendre l'algorithme). Vos modèles sont nommés N-grams . Vous devrez cependant limiter le motif maximal.

1voto

GrayWizardx Points 6812

C'est un problème assez classique de la CS. Le code en général n'est pas trivial à mettre en œuvre car il nécessitera au moins une analyse complète de la séquence, et en fonction de votre efficacité et des contraintes de mémoire/processeur, il pourrait en nécessiter plusieurs. Voir aquí .

Vous devrez partitionner votre chaîne d'entrée d'une manière ou d'une autre pour vous assurer d'obtenir une bonne sous-séquence à travers elle.

Si vous avez un problème spécifique, nous pourrons peut-être vous aider davantage, mais la stratégie générale se trouve dans l'article de Wikipedia ci-dessus.

0voto

Crowe T. Robot Points 1798

Vous pouvez utiliser des expressions régulières pour créer un modèle à rechercher.

La regex nécessaire serait très simple. Il suffit d'utiliser la phrase exacte que vous recherchez. Il devrait alors exister une fonction d'expression régulière dans le langage que vous utilisez (vous ne l'avez pas précisé) qui peut compter le nombre de correspondances.

Utilisez cela pour créer un compteur simple.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X