pointer mit typecast

Gast #1956422
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?
#1956423
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren