Bonjour,
Aidez moi svp car je suis devant un problème très con mais carrément au dessus de mes compétences...
Le problème :
je veux lire des paquets de 4 octets dans un fichier et les mettre dans un float.
J'arrive à récuperer les blocs de 4 octets, mais après, euh, c'est quoi la formule magique pour en faire une variable de type float ?
Après une bonne trentaine d'essais je suis tombé sur ça, mais c'est complétement foireux...
qqn a une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 try { FileInputStream fis = new FileInputStream( cheminFichierData ); BufferedInputStream lecteur = new BufferedInputStream( fis ); for (int i=0 ; i < nbCoupes; ++i) { for (int j=0 ; j < hauteur; ++j) { for (int k=0 ; k < largeur; ++k) { byte[] quatreOctets = new byte[4]; int nbBytesLus = lecteur.read(quatreOctets,0,4); if (nbBytesLus!=4) { Erreur.erreur("nb bytes lus different de 4"); } int x= 255 & quatreOctets[0]; int y= 255 & quatreOctets[1]; int z= 255 & quatreOctets[2]; int t= 255 & quatreOctets[3]; lesCoupes[i][j][k].r=x; lesCoupes[i][j][k].g=y; lesCoupes[i][j][k].b=z; lesCoupes[i][j][k].a=t; lesCoupes[i][j][k].col = 16777215*t+65535*z +255*y+x ; } } } lecteur.close(); fis.close(); } catch(Exception e) { Erreur.erreur("erreur lors de la lecture de la coupe"); }
J'ai bien les paquets de 4 bytes, l'execution marche le fichier a la bonne taille etc., mais par contre les valeurs des floats sont complétement erronées..
Partager