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 :
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).
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;
Pour les float, j'ai essayé plusieurs façons, et celle qui m'a donné les résultats les moindres est la suivante :
Mais alors test2 vaut NaN. Appliqué à 0.14, cela fonctionne.
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);
Partager