Salut � tous !
Je me retrouve � lire (en C++) des fichiers non format�s (binaires) s�quentiels g�n�r�s en Fortran, ce qui met � mal le peu de sant� mentale qu�il me reste. Au-del� des probl�mes de d�limiteurs d�enregistrements que je pense avoir r�gl�, j�ai besoin de faire des conversions depuis petit-boutsien (little-endian) � gros-boutsien (big-endian) et inversement. Voici un code qui semble donner satisfaction :
N�anmoins, je crains qu�elle ne soit pas tr�s s�r dans le cas de valeurs sign�es. De plus, je ne suis pas certain que ce soit le meilleur moyen d�effectuer cette conversion. Si quelqu�un s�est d�j� attel� � ce probl�me et a des conseils, je suis preneur.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10 /** * \brief Swap from little or big endian to the other. * \param x Data to be converted. * \todo This function has to be redone in a more secure way. */ template <class T> inline void littleBigEndian (T &x) { // Number of bits for the swap. Infers that a char has 8 bits. const size_t n = sizeof(T) * 4; x = (x << n) | (x >> n); } // void littleBigEndian (T &)
� bient�t.
Le Farfadet Spatial
Partager