De una biblioteca con la que estoy trabajando Recibo una matriz de ushort
.C#: Convertir ushort para flotar
quiero convertirlos en una serie de float
: La primera ushort
representa el 16 MSB del primer y el segundo float
ushort
es el 16 LSB del primer float
, y así sucesivamente.
me trataron con algo como lo siguiente, pero el valor se presenta como el valor del número entero, no los bits primas:
ushort[] buffer = { 0xBF80, 0x0000 };
float f = (uint)buffer[0] << 16 | buffer[1];
// expected result => f == -1 (0xBF800000)
// effective result => f == 3.21283686E+9 (0x4F3F8000)
Cualquier sugerencia?
La sintaxis de C# para matrices de tamaño fijo es 'fixed ushort buffer [2];', y no estoy seguro si eso funciona junto con '[FieldOffset]'. No puede usar una matriz C# normal ya que eso convertiría el puntero a la matriz, no el contenido de la matriz. – Daniel
@Daniel gracias, no he programado en C# mucho recientemente. –