Bonjour,

j'essaie d'encoder et décoder des int et des float en binaire, en utilisant les opérateurs binaires. Avec les int, cela fonctionne, mais avec les float selon les nombres j'ai des NaN. Quelqu'un a-t-il une solution ? Je vous mets le code ci-dessous

Pour les int :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
int i = 67108864;
b1 = (byte) (i >> 24);
b2 = (byte) (i >> 16);
b3 = (byte) (i >> 8);
b4 = (byte) i;
Le code ci-dessus fonctionne sans problème (les nombres que j'ai à traiter sont positifs et pas assez grands pour riquer de me poser problème).

Pour les float, j'ai essayé plusieurs façons, et celle qui m'a donné les résultats les moindres est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
float f = 3.14f;
int i = Float.floatToIntBits(f);
b1 = (byte) (i >> 24);
b2 = (byte) (i >> 16);
b3 = (byte) (i >> 8);
b4 = (byte) i;
 
int test = b1 << 24 | b2 << 16 | b3 << 8 | b4;
float test2 = Float.intBitsToFloat(test);
Mais alors test2 vaut NaN. Appliqué à 0.14, cela fonctionne.