2010-11-22 11 views

Respuesta

30

.NET Single y Double ya están en formato IEEE-754. Puede usar BitConverter.ToSingle() y ToDouble() para convertir byte [] a coma flotante, GetBytes() para ir al revés.

+0

¿Cómo podemos hacer esto sin usar GetBytes() me refiero a usar forloops –

+0

@SriramSatti ver mi respuesta –

5

Si no desea asignar nuevas matrices de todo el tiempo (que es lo que hace GetBytes), puede utilizar unsafe código para escribir directamente en una memoria intermedia:

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; 
    } 
} 
Cuestiones relacionadas