2010-11-22 30 views

Répondre

30

.NET Single et Double sont déjà au format IEEE-754. Vous pouvez utiliser BitConverter.ToSingle() et ToDouble() pour convertir octet [] en virgule flottante, GetBytes() pour aller dans l'autre sens.

+0

Comment pouvons-nous faire cela sans l'aide GetBytes(). je veux dire en utilisant forloops –

+0

@SriramSatti voir ma réponse –

5

Si vous ne voulez pas affecter de nouveaux tableaux tout le temps (ce qui est ce que GetBytes fait), vous pouvez utiliser le code unsafe pour écrire dans un tampon directement:

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