Bonjour,

Je travaille sur un projet java existant déjà! et j arrive pas a comprendre cette partie du code :
Ce bout de code permet de convertir des float exemple (0.001) ou ( 9.999999999999999E-10) en hexadecimal.
PS: La fonction write () c'est pour écrire dans fichier binaire!
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
45
46
47
double db_num;
        int    sign_bit;
	String t = "0.001";
        db_num = Double.parseDouble(t.toString());
                           /* FOR TEMPORARY */
       sign_bit = (db_num > 0.0D) ? 0 : 1;    
 
        db_num = Math.abs(db_num);          
 
 
        double db_tmp = db_num;
        int expo_cnt = 0;;
 
        if ( db_num >= 1.0D) {
            for (expo_cnt=1; (db_tmp=db_tmp/16.0D)>1.0D; expo_cnt++);
        }
        else {
            for (expo_cnt=0; (db_tmp=db_tmp*16.0D)<1.0D; expo_cnt--);
            db_tmp = db_tmp/16.0D;
        }
 
        int exponent = expo_cnt  + 64;   /* Excess-64 code */
        //b = (byte)(sign_bit << 7) | (byte)(exponent & 0x0000007F);
      byte b1 = (byte)(sign_bit << 7);
        byte b2 = (byte)(exponent & 0x7F);
        byte b3 = (byte)(b1 | b2);
 
        write(b3);
 
 
        String s = "";
        byte b = 0;
        for (int i=1; i<=56; i++) {
            db_tmp = db_tmp*2.0D;
            if (db_tmp >= 1.0D) {
                db_tmp = db_tmp - 1.0D;
                s = s + "1";
                b = (byte)(b << 1);
                b = (byte)(b | 0x1);
            }
            else {
                s = s + "0";
                b = (byte)(b << 1);
            }
            if (i % 8 == 0) {   /* one byte */
            write(b);
                b = 0;

Alors si quelqu'un peut m’éclairer, m orienter, etc ça sera parfait!
Merci d'avance