Bernd F. schrieb:
> ausbaufähig. Ich habe hier ein struct mit unterschiedlichen Wortbreiten,
> also etwa so:
>
>
1 | > typedef struct {
|
2 | > uint8_t wert1;
|
3 | > uint8_t wert2;
|
4 | > uint32_t wert3;
|
5 | > uint16_t wert4;
|
6 | > }my_struct;
|
7 | > my_struct daten;
|
8 | >
|
>
> Ich möchte nun die einzelnen Werte in eine Schleife bekommen, um eine
> Prüfsumme zu berechnen.
Soll die Prüfsumme die Summe der Werte sein oder soll sie die Summe der
Bytes sein.
> Zwei Verständnisschwierigkeiten türmen sich vor
> mir. Wie bekomme ich Zugriff auf die einzelnen Werte, also etwa in der
> Art:
>
1 | > for(i=0;i<4;i++)
|
2 | > {
|
3 | > machmirdiePruefsumme(daten.wert[i]);
|
4 | > }
|
5 | >
|
so gar nicht. Zumindest macht man das nicht so. Hängt aber auch darvon
ab, was du unter Prüfsumme verstehst.
> Zum anderen, ich müsste wohl vermutlich zur Berechnung die struct-Werte
> auf 32bit casten.
Komtm drauf an, was du unter Prüfsumme verstehst.
> Wie müsste das aussehen?
> Ihr seht schon, ich bin da etwas planlos. Hoffentlich habe ich mich
> zumindest verständlich ausgedrückt, und es gibt eine Lösung für die
> Sache.
Kommt drauf an, was eigentlich genau das Problem ist. Fangen wir doch
einfach mal damit an, was denn mit der Prüfsumme geschehen soll.
Wenn es sich um eine byteweise Prüfsumme handelt, die du zb irgendwohin
übertragen musst, gibt es eine ganz einfache Lösung, indem man den
Compiler zwingt die struct komplett zu ignorieren und den
Speicherbereich einfach nur als Abfolge von Bytes anzusehen.