Endianess et lecture fichier binaire
Bonjour,
Je dois réaliser un programme qui lit un fichier binaire (qui peut avoir été écrit par nimporte quelle autre machine). Seulement je sais juste que mon fichier contient un int suivie d'un double et ensuite un uint (j'ai simplifié).
Par exemple,
-une machine A peut écrire ce fichier binaire avec un little endian
8 octets pour int, 8 octets pour double et 8 octets pour l'uint
Ca fait que le fichier binaire bin.dat a une taille de 24 octets
-une autre machine B doit lire ce fichier bin.dat or cette machine est en big-endian et code les int sous 4 octets, les doubles sous 8 octets et les uint sous 4 octets. Dans ce cas la la machine B ne lira pas les données correctement.
Donc ma question est comment faire pour que B détecte que A a codé l'int sous 8 octets et comment faire pour sauver cet entier sous 8 octets sous B?
Au niveau de l'endianess je sais qu'il faut se fixé une règle pour dire que le fichier doit être ecrit en BIG endian par exemple et ainsi le lecteur sait qu'il doit inverser les octet si il est en little endian.
Mais mon vri problème est au niveau de la taille des données comment les gérer ?
Merci
Algernon
PB endianess lecture fichier binaire C
Une autre question, est-ce que il est préférable de passer en C#, car je crois que C# gère cela tout seul non?
J'ai lus dans un cours que seul les ints ne sont pas portables, mais je pense que les double et les floats ne le sont pas non plus car leur taille peuvent différés d'une machine à une autre, est-ce vrai?
Merci pour vos réponses
Algernon