c# - punto - rango representacion ieee 754
Cómo obtener la representación binaria IEEE 754 de un flotador en C# (2)
Tengo algunos flotadores de precisión simple y doble que quiero escribir y leer desde un byte []. ¿Hay algo en .Net que pueda usar para convertirlos desde y hacia sus representaciones IEEE 754 de 32 y 64 bits?
.NET Single y Double ya están en formato IEEE-754. Puede usar BitConverter.ToSingle () y ToDouble () para convertir el byte [] a punto flotante, GetBytes () para ir al revés.
Si no desea asignar nuevos arreglos todo el tiempo (que es lo que hace GetBytes
), puede usar código unsafe
para escribir directamente en un búfer:
static void Main()
{
byte[] data = new byte[20];
GetBytes(0, data, 0);
GetBytes(123.45F, data, 4);
GetBytes(123.45D, data, 8);
}
static unsafe void GetBytes(float value, byte[] buffer, int offset)
{
fixed (byte* ptr = &buffer[offset])
{
float* typed = (float*)ptr;
*typed = value;
}
}
static unsafe void GetBytes(double value, byte[] buffer, int offset)
{
fixed (byte* ptr = &buffer[offset])
{
double* typed = (double*)ptr;
*typed = value;
}
}