mikrocontroller.net

Forum: Compiler & IDEs pointer mit typecast


Autor: horst peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

habe seit längerem ein komisches Pointerproblem mit dem avr studio

es gibt einen
char data[4];
 array in dem sich 4 bytes einer long value befinden

jetzt möchte ich den long wert wieder sauber in eine variable packen und 
bin natürlich zu faul jedes byte einzeln drauf zu shiften wie hier z.b.
long wert;

wert=data[3];
wert<<=8;
wert|=data[2];
wert<<=8;
wert|=data[1];
wert<<=8;
wert|=data[0];

sondern caste einfach den byte array zu einem long wert:

long wert;
wert=*((long*)data);


was mir allerdings total zufällige ausgaben bringt?
theoretisch müsste das doch so funktionieren?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
horst peter schrieb:

> was mir allerdings total zufällige ausgaben bringt?
> theoretisch müsste das doch so funktionieren?

Solange die Bytereihenfolge stimmt, sollte das gehen.
Aber wahrscheinlich wird es an genau dieser Reihenfolge scheitern.

Wo hast du denn die Einzelbytes her?

(Und bitte: nimm für Bytes den Datentyp unsigned char. Alles andere ist: 
Ask for trouble. char nimmst du nur dann, wenn du Textverarbeitung 
machen willst, wo es also egal ist, ob ein char ein Vorzeichen hat oder 
nicht. Für alles andere immer explizit signed char oder unsigned char 
benutzen)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.