Forum: Compiler & IDEs pointer mit typecast


von horst peter (Gast)


Lesenswert?

Hallo

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

es gibt einen
1
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.
1
long wert;
2
3
wert=data[3];
4
wert<<=8;
5
wert|=data[2];
6
wert<<=8;
7
wert|=data[1];
8
wert<<=8;
9
wert|=data[0];

sondern caste einfach den byte array zu einem long wert:
1
long wert;
2
wert=*((long*)data);

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

von Karl H. (kbuchegg)


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)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.