2010-11-22 11 views

Antwort

30

.NET Single und Double sind bereits im IEEE-754-Format. Sie können BitConverter.ToSingle() und ToDouble() verwenden, um byte [] in Gleitkomma zu konvertieren, GetBytes(), um umgekehrt zu gehen.

+0

Wie können wir dies tun, ohne Verwendung von GetBytes(). Ich meine Forloops verwenden –

+0

@SriramSatti siehe meine Antwort –

5

Wenn Sie wollen keine neuen Arrays die ganze Zeit zuzuweisen (was GetBytes der Fall ist), können Sie unsafe Code verwenden, um einen Puffer direkt zu schreiben:

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