2010-11-29 11 views
7

estoy usando C# y la lectura de bytes matriz a partir de algunos controlador y convertirlos a sus tipos. todos los valores (int, string) OK excepto los valores float. El valor que se supone obtener es 533174.1. pero al leer la matrizproblema conversión de 4 bytes de matriz para flotar en C#

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

conseguir algún valor galimatías. Utilicé el System.BitConverter.ToDouble(bytesArr,0) y otros métodos sin éxito. por favor ayuda. Gracias, Igal.

Respuesta

14

Sus bytes están saliendo intercambiados por palabras. Esta función debe convertir su matriz de bytes en flotantes correctamente:

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

Hola. realmente ayudaste Gracias. – Igal

2
  1. ¿Qué tal endianess? ¿Has intentado revertir el orden de las palabras? En las ventanas, 533174.1 es 98, 43, 2, 73.
  2. 4 bytes son un único (ToSingle), no doble.
+0

Gracias, ayudó. – Igal

Cuestiones relacionadas