2010-11-29 3 views
7

J'utilise C# et la lecture d'un tableau d'octets depuis un contrôleur pour les convertir en leurs types. toutes les valeurs (int, string) OK sauf les valeurs float. La valeur que l'on suppose obtenir est 533174.1. mais lors de la lecture du tableauProblème lors de la conversion d'un tableau de 4 octets en C#

byteArr[0]=2 
byteArr[1]=73 
byteArr[2]=98 
byteArr[3]=43 

obtenir une valeur de charabia. J'ai utilisé le System.BitConverter.ToDouble(bytesArr,0) et d'autres méthodes sans succès. aidez s'il vous plaît. Merci, Igal.

Répondre

14

Vos octets sont échangés par des mots. Cette fonction devrait convertir votre tableau d'octets en flottants correctement:

static float ToFloat(byte[] input) 
{ 
    byte[] newArray = new[] { input[2], input[3], input[0], input[1] }; 
    return BitConverter.ToSingle(newArray, 0); 
} 

ToFloat(new byte[]{2,73,98,43}) == 533174.1 
+0

Salut. tu as vraiment aidé. Merci. – Igal

2
  1. Qu'en est-il de l'endianess? Avez-vous essayé d'inverser l'ordre des mots? Dans Windows, 533174.1 est 98, 43, 2, 73.
  2. 4 octets sont un seul (ToSingle), pas double.
+0

Merci, Cela a aidé. – Igal

Questions connexes