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
Partager