Bonjour, j'ai un probleme pour convertire certaines informations.
En gros dans mon programme je reçoit une trame sous forme d'un Byte[].
Je veux construire un float a partir de 2 de ces octects.

J'arrive a construire un int allant de 0 à 65535 mais je n'arrive pas a comprendre comment faire pour en faire un Float pouvant alllez de -32768 à +32768.

Je poste le code que j'utilise pour créer un entier :

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
 
public static int HexaToInt(Byte[] Buffer, int debut, int longueur)
        {
            int Somme = 0;
            int facteur = 0;
            Char currentCaractere;
            Byte[] WorkingBuffer = new Byte[longueur];
 
            for (int i = 0; i < longueur; i++)
            {
                WorkingBuffer[i] = Buffer[debut + i];
            }
            String tmpString = TrameToString(WorkingBuffer).Replace(" ","");
            for (int j = tmpString.Length - 1; j >= 0; j--)
            {
                currentCaractere = tmpString[j];
                switch (currentCaractere)
                {
                    case '1': Somme += 1 * puissance(16, facteur); break;
                    case '2': Somme += 2 * puissance(16, facteur); break;
                    case '3': Somme += 3 * puissance(16, facteur); break;
                    case '4': Somme += 4 * puissance(16, facteur); break;
                    case '5': Somme += 5 * puissance(16, facteur); break;
                    case '6': Somme += 6 * puissance(16, facteur); break;
                    case '7': Somme += 7 * puissance(16, facteur); break;
                    case '8': Somme += 8 * puissance(16, facteur); break;
                    case '9': Somme += 9 * puissance(16, facteur); break;
                    case 'A': Somme += 10 * puissance(16, facteur); break;
                    case 'B': Somme += 11 * puissance(16, facteur); break;
                    case 'C': Somme += 12 * puissance(16, facteur); break;
                    case 'D': Somme += 13 * puissance(16, facteur); break;
                    case 'E': Somme += 14 * puissance(16, facteur); break;
                    case 'F': Somme += 15 * puissance(16, facteur); break;
                }
                facteur++;
            }
            return Somme;
        }
Existe t'il un moyen pour caster directement un float Signé ??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
Byte[] toto = new Byte[2];
toto[0] = 0x23;
toto[1] = 0x34;
 
float LeFlottant = (float)toto; // Marche pas ca serais trop facile
Need assistance !