AVRli schrieb:
> uint32val = (uint32_t)(*buf);
Das geht natürlich nicht denn das da:
ist gleichbedeutend mit dem da:
also du nimmst nur das erste Element des char arrays (was zufällig 0 ist
in Deinem Beispiel) und castest das dann nach uint32_t und dann ist es
natürlich immer noch 0.
Versuchs mal so:
1 | uint32_t* p = (uint32_t*)buf;
|
2 | uint32val = p[0];
|
ABER das ist schmutzig und böse und überhaupt nicht portabel, es wird
nur gehen wenn die Endianness zufällig stimmt, ansonsten würd ich
einfach die 4 bytes wie von Peter beschrieben explizit in der richtigen
Reihenfolge zusammensetzen.
Edit: sehe gerade daß es wahrscheinlich nicht mit dem einfachen
Pointer-Cast gehen wird (d.H. der Cast wird schon gehen, nur das
Ergebnis wird falsch sein) denn die von Dir gepostete
Beispiel-Zahlenfolge ist Big-Endian und Dein Prozessor ist
wahrscheinlich Little-Endian.