kurze frage: 8 byte in double im Arduino Duemilanove möglich?

Hallo, würde gerne acht einzelne 8 Bytes in richtiger Reihenfolge als Double abspeichern und dann damit weiterarbeiten ist das überhaupt möglich, wenn ja würde ich mich über ein Stichwort freuen. Wenn nicht , welche alternativen gibt es? Gruß

Nein. 64 bit Gleitkommazahlen gibt es nur auf dem Due.

EDIT: Natürlich 64 bit. Nicht 32. Ooops

Siehe hier: http://arduino.cc/en/Reference/Double

Wenn nicht , welche alternativen gibt es?

Wenn die Reihenfolge stimmt, geht das natürlich mit den 4 byte eines float ( float32 / single oder wie immer der Datentyp bei dir heisst.)

Stichwort union

union {float f; byte b[4];} data;
int i = 0;
void loop()  {
  while (Serial.available() && i < 4) data.b[i++] = Serial.read(); // fill 4 bytes somehow
  if ( i == 4) workWith (data.f) ; // data.f contains the float representation of the 4 bytes
}

Oder ein float ( oder arduino 4-byte double ) als byte array adressieren:

float x = 0.5;
byte* p = (byte*) &x;
for (int i = 0; i < sizeof(x); i++)
{ Serial.print(p[i],HEX); Serial.print(' '); }

// p[0]  == 0;  (LSB)
// p[1]  == 0;
// p[2] == 0;
// p[3] == 0x3f; (exponent)

Die Reihenfolge ist auf PC und Arduino gleich, aber nicht auf jeder Hardware …

Gibsonuser: würde gerne acht einzelne 8 Bytes in richtiger Reihenfolge als Double abspeichern und dann damit weiterarbeiten ist das überhaupt möglich

Ich weiß nicht, ob ich das Problem genau verstanden habe, aber ich gehe mal davon aus, dass Dir bekannt ist, dass auf den 8-Bit AVR-Controllern keine 64-Bit Gleitkommazahlen vom Compiler unterstützt werden.

Ich gehe also davon aus, dass Du von irgendwo über eine externe Schnittstelle binär codierte 64-Bit "doppelt genaue" Gleitkommazahlen in Form von 8 Bytes geliefert bekommst, und Du diese einlesen, in "float" 32-Bit Gleitkommazahlen umwandeln und damit "einfach genau" weiterrechnen möchtest.

Für diesen Fall hat "drhex" als Reply #3 hier eine Lösung mit Code gepostet, wie Du auf 8-Bit Arduinos eine 64-Bit (double, 8 Bytes) große Gleitkommazahl in eine 32-Bit (float, 4 Bytes) Gleitkommazahl konvertieren kannst: http://forum.arduino.cc/index.php?topic=44589.msg322892#msg322892

hat geklappt danke =)!