J'ai un fichier binaire de doubles que j'ai besoin de charger en utilisant C++. Cependant, mon problème est qu'il a été écrit en format big-endian mais l'opérateur fstream >> lira alors le numéro erroné car ma machine est little-endian. Cela semble être un problème simple à résoudre pour les entiers, mais pour les doubles et les flottants, les solutions que j'ai trouvées ne fonctionneront pas. Comment puis-je (ou devrais-je) résoudre ce problème?Pourquoi l'échange d'octets à virgule flottante est-il différent de l'échange d'octets sur un nombre entier?
Je lis comme référence pour la permutation d'octet entier:
How do I convert between big-endian and little-endian values in C++?
EDIT: Bien que ces réponses sont éclairantes, j'ai trouvé que mon problème est avec le fichier lui-même et non le format du fichier binaire Les données. Je crois que mon échange d'octets fonctionne, j'avais juste des résultats confus. Merci de votre aide!
Je me serais attendu à double/float solutions de permutation octet fonctionne exactement le même (qui est, définir une union flottante/int32, écrire le flotteur mal-endian en elle, octet swap, le int32, et lire le flotteur à nouveau), donc je pense que vous devez expliquer quelles sont les solutions que vous avez essayées et qui ne fonctionneront pas. –