Erzwinge, dass die C ++ - Struktur dicht gepackt wird

Ich versuche, eine Binärdatei einzulesen. Das Problem ist, dass der Ersteller der Datei keine Zeit brauchte, um Datenstrukturen an ihren natürlichen Grenzen auszurichten, und alles dicht gepackt ist. Dies macht es schwierig, die Daten mit C ++ - Strukturen zu lesen.

Gibt es eine Möglichkeit, astruct dicht gepackt sein?

Beispiel:

struct {
    short a;
    int b;
}

Die obige Struktur ist 8 Bytes: 2 fürshort a, 2 zum Auffüllen, 4 zumint b. Auf der Festplatte sind die Daten jedoch nur 6 Byte groß (ohne die 2 Byte Auffüllung für die Ausrichtung).

Bitte beachten Sie, dass die tatsächlichen Datenstrukturen Tausende von Bytes und viele Felder umfassen, einschließlich einiger Arrays. Daher würde ich es vorziehen, nicht jedes Feld einzeln zu lesen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage