2009-12-14 4 views
3

Je voudrais trouver des motifs et les classer par nombre d'occurrences sur un fichier HEX que j'ai.Trouver des motifs HEX et le nombre d'occurrences

Je ne cherche pas de modèle spécifique, juste pour faire quelques statistiques sur les occurrences qui s'y passent et les trier.

DB0DDAEEDAF7DAF5DB1FDB1DDB20DB1BDAFCDAFBDB1FDB18DB23DB06DB21DB15DB25DB1DDB2EDB36DB43DB59DB32DB28DB2ADB46DB6FDB32DB44DB40DB50DB87DBB0DBA1DBABDBA0DB9ADBA6DBACDBA0DB96DB95DBB7DBCFDBCBDBD6DB9CDBB5DB9DDB9FDBA3DB88DB89DB93DBA5DB9CDBC1DBC1DBC6DBC3DBC9DBB3DBB8DBB6DBC8DBA8DBB6DBA2DB98DBA9DBB9DBDBDBD5DBD9DBC3DB9BDBA2DB84DB83DB7DDB6BDB58DB4EDB42DB16DB0DDB01DB02DAFCDAE9DAE5DAD9DAE2DAB7DA9BDAA6DA9EDAAADAC9DACADAC4DA92DA90DA84DA89DA93DAA9DA8CDA7FDA62DA53DA6EDA 

C'est un extrait du fichier HEX, et comme un exemple que je voudrais obtenir:

XX occurrences de BDBDBD

XX occurrences de B93D

est-il un moyen extraire le fichier pour générer cette sortie?

+0

Recherchez-vous des motifs à 6 ou 4 caractères, ou les deux. Si vous cherchez des modèles de longueur arbitraire, la tâche est beaucoup plus complexe. Que diriez-vous des modèles se chevauchant? – pavium

+0

Est-ce que ces devoirs sont utiles? – GrayWizardx

+0

Je cherche des patrons de longueur de paire (2, 4, 6 ...). Pas de chevauchement des motifs. Le fichier est d'environ 700Kb et donc je pense qu'il n'y a pas de gros problème sur l'efficacité du programme. –

Répondre

2

Bien sûr. Utilisez un sliding window 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. Cependant, vous devrez limiter le modèle maximal.

+0

Merci, ceci a résolu mon problème! –

0

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

La regex nécessaire serait très simple. Utilisez simplement l'expression exacte que vous recherchez. Ensuite, il devrait y avoir une fonction d'expression régulière dans la langue que vous utilisez (vous n'avez pas spécifié) qui peut compter le nombre de correspondances.

Utilisez-le pour créer un compteur simple.

+0

Désolé de ne pas spécifier la langue. Ce serait soit objectif-c/Cocoa ou PHP qui sont les deux que je peux coder. –

1

Ceci est un problème assez classique de CS. Le code en général est non-trivial à implémenter car il nécessitera au moins une analyse complète de la séquence, et en fonction de votre efficacité et des contraintes mémoire/processeur, il peut en nécessiter plusieurs. Voir here.

Vous aurez besoin de partitionner votre chaîne d'entrée d'une manière ou d'une autre pour vous assurer une bonne sous-séquence.

S'il y a un problème spécifique, nous pourrions être en mesure d'aider plus, mais la stratégie générale est dans l'article Wikipedia ci-dessus.

+0

Pouvez-vous me dire ce que CS veut dire, s'il vous plaît? –

+3

Euh-oh! Huston, je pense que nous avons un problème. – pavium

+0

Informatique –

Questions connexes