Alignment von Datenstrukturen
-
Ich habe folgendes Problem:
Ich habe eine Klasse:
class foo { char a; short b; ... };und ein char-Array mit Daten aus einer Datei.
In der Datei sind die Daten ohne besondere Ausrichtung,
versuche ich jetzt, über die Klasse auf die Daten zuzugreifen,
gibt es einen Fehler:foo *a=(foo *)&data[100]; cout<<int(a->a); //kein Problem cout<<a->b; //die Daten sind um ein Byte verschobenGibt es eine Möglichkeit, die Ausrichtung so zu ändern, dass das funktioniert?
(Und zwar ohne char-Array anstatt dem short)Und wie weise ich einem short am besten den Wert aus einem char-Array zu?
char foo[]={10,20}; short a=*(short *)&foo[0]; //funktioniert short a=foo[0]*0x100+foo[1]; //funktioniert ahort a=(short)foo[0]; //funktioniert nicht, a=10
-
Problem gelößt
__attribute__ ((packed))ist mein Freund
