Le 19/02/08, Jerome Kieffer<jerome.Kieffer@???> a écrit :
> Bonjour,
>
> Je cherche à décoder un fichier binaire, dans l'entête de ce dernier il
> y a ceci :
>
> MovieFrames
> MovieType 1
> numericFormat 1 1
> Axes
> Sequence step 1 6 6
> Dependents
> not_objcls Potential_E 4 1 3 kcal/mol 1
> -1
> not_objcls CONFLEX_Flag 1 1 0 none 1
> -1
> atom xyz_coordinates 3 3 3 angstrom 16
> 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17
> StartFrames
>
> Ce qui me suggère la répétition 6 fois de
> Energie potentielle, float sur 4 octets (vérifié cela marche)
> Flag, entier 8 bits (ca marche)
> 16 Coordonnées en XYZ par 3x3octets
>
> Mon problème se situe dans la conversion 3octets -> 1 float. Quelqu'un
> a il une idée de la taille de la mantisse et de l'exposant ? je verrais
> bien 20 + 4 bits mais sans certitude. Visiblement ajouter un octet vide
> ou plein, au début, au milieu ou a la fin ne sert à rien :(
>
> Sans doute mon plus grand problème : comment convertir mes 24 bits en
> un reel ? j'ai oublié mes cours d'info d'il y a dix ans. Please, help !
>
> Thanks a lot car à part les spec des drivers OpenGL, j'ai pas trouvé
> grand chose d'exitant : en OpenGL ils travaillent sur des reel 16
> bits.
Un réel R avec la norme IEEE(simple précision) c'est :
R = (-1)^<signe> . (1,<mantisse>) . 2^(<exposant>-127)
<signe> sur 1 bit
<mantisse> sur 24 bits (le premier toujours 1)
<exposant> sur 8 bits
Même si les nombres à représenter sont tous dans (1-;1) je ne vois
vraiment pas comment on peut se passer de l'exposant. A moins que les
nombres ne soient pas des "floats" du C ...
>
> --
> Jérôme KIEFFER : http://www.terre-adelie.org
> À vélo, prendre une rue à contre-sens est moins dangeureux
> que prendre un boulevard dans le sens légal. À qui la faute ?
>
>
--
M. Bouaziz-Viallet