Decodage de données binaires
Bonjour, à tous !
Mes connaissances en programmation se limitant à ce que j'ai pu apprendre lors de ma scolarité, j'espère ne choquer personne avec mes questions ^^ !. J'éspère aussi poster au bon endroit :mrgreen: !
Voila je vous explique mon problème, j'ai écrit un petit bout de code maladroit qui mélange C et C++ (cela doit être affreux pour un programmeur confirmé mais le résultat est fonctionnel) qui a mon gout prend beaucoup de temps pour s'exécuter.
Le but de ce programme est de lire un fichier binaire qui contient un enregistrement de la communication numérique (ARINC) d'un équipement aéronautique.
Pour lire le fichier binaire pas de soucis cela se fait assez rapidement, le problème se situe au niveau du décodage des trames ARINC enregistrées, opération qui prend le plus de temps dans mon code.
Le fichier binaire contient en fait des succession de paquets de 9 octets : 5 octets contenant une info temporelle et 4 octets contenant le mot ARINC reçu.
Pour ce faire je lis l'ensemble des paquets de 9 octets et je les stockent un à un dans une liste chainée que je parcours ensuite pour les décoder, le résultats du décodage est stocké a son tour dans une structure qui est elle même stockée dans une autre liste chainée de structure (:bug:).
Le decodage consiste pour les 4 octets du mot ARINC a decomposer les 32 bits en différente parties pour obtenir les informations qu'il contient.Pour ce qui est de l'info temporelle les 5 octects contiennent sous forme binaire Heures;Minutes;Secondes et Microsecondes (8 bits pour les H, 6 pour les minutes, 6 pour les secondes et 20 pour les µsecondes)
Pour l'instant je me débrouille avec des divisions et des soustractions pour extraire les parties désirées du mot ou de l'info temporelle. De plus j'ai besoins d'afficher l'info temporelle sous la forme seconde.µsecondes ( H*3600+60*M+S+(µS/1000000)), ce calcul doit etre gourmand en temps je pense.
Ce projet étant lié a mon travail, je ne peut pas tout le temps rentrer dans le détail. Ma question se limite au problème de temps de calcul pour décoder les mots, si quelqu'un à une idée je lui en serait très reconnaissant.
Je peut donner plus d'infos dans un message privé (surtout que tout cela doit vous paraitre brouillon mais j'ai du mal à tout expliquer de manière succincte) et même vous fournir mon code si cela peut aider.
D'avance merci ;).