- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 4 von 4

Thema: gcc-double nach C#-double konvertieren?

  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    41
    Beiträge
    2.009

    gcc-double nach C#-double konvertieren?

    Anzeige

    Praxistest und DIY Projekte
    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:
    Code:
    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:
    Code:
    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
    #ifndef MfG
    #define MfG

  2. #2
    shedepe
    Gast
    Spricht was dagegen das ganze als float einzulesen ? Float is doch bereits 4 Byte breit

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    36
    Beiträge
    1.225
    Jaecko: AVRs kennen keinen Double, dort gilt: Double = Float (daher die 4 Bytes)

    AVR-GCC dürfte wie die meisten Compiler nach IEEE754 rechnen, du müsstest daher nur eine Möglichkeit finden, den Typ des gelesenen Wertes umzudefinieren ohne dabei eine Typumwandlung durchzuführen.

    mfG
    Markus

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    41
    Beiträge
    2.009
    Den Wert einfach als float einzulesen hat perfekt geklappt, Thx.
    War fast wieder zu einfach *g*.
    #ifndef MfG
    #define MfG

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress