Jaecko
12.06.2010, 14:02
Moin.
Ein AVR schreibt mir auf eine SD-Karte einige Log-Daten; ich klatsch also einfach die
Struct mit den jeweiligen Werten Byteweise auf die Karte.
Darunter sind auch double-Werte, die ja beim AVR 4 Byte gross sind.
C# verwendet aber 8 Byte für eine double-Variable.
Aus dem von der SD-Karte gelesenen Byte-Array les ich z.B. einen Uint32 so:
byte[] dArray = new byte[4];
Array.Copy(readBytes, 22, dArray, 0, 4); // 22: Startposition, 0: Zielposition, 4: Länge
UInt32 dData = BitConverter.ToUInt32(dArray,0);
Ein 8-Bit-Double entsprechend so:
byte[] edArray = new byte[8];
Array.Copy(readBytes, 26, eArray, 0, 8); // 26: Startposition, 0: Zielposition, 8: Länge
double eData = BitConverter.ToDouble(eArray,0);
Wie kann ich nun die 4-Byte-double vom AVR in ein 8-Byte-double für C# konvertieren?
mfG
Ein AVR schreibt mir auf eine SD-Karte einige Log-Daten; ich klatsch also einfach die
Struct mit den jeweiligen Werten Byteweise auf die Karte.
Darunter sind auch double-Werte, die ja beim AVR 4 Byte gross sind.
C# verwendet aber 8 Byte für eine double-Variable.
Aus dem von der SD-Karte gelesenen Byte-Array les ich z.B. einen Uint32 so:
byte[] dArray = new byte[4];
Array.Copy(readBytes, 22, dArray, 0, 4); // 22: Startposition, 0: Zielposition, 4: Länge
UInt32 dData = BitConverter.ToUInt32(dArray,0);
Ein 8-Bit-Double entsprechend so:
byte[] edArray = new byte[8];
Array.Copy(readBytes, 26, eArray, 0, 8); // 26: Startposition, 0: Zielposition, 8: Länge
double eData = BitConverter.ToDouble(eArray,0);
Wie kann ich nun die 4-Byte-double vom AVR in ein 8-Byte-double für C# konvertieren?
mfG