[C#2.0] Convertion Byte[] en float
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:
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:
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 !
:bug: