packed struct voor exacte layout
Leg bits zonder opvulling vast
packed struct voor exacte layout is een gratis Zig Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Zig Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Zig Academy bevat in totaal 4 lessen.
Layout is belangrijk
Soms moeten bytes exact in een bepaalde vorm worden gerangschikt, bijvoorbeeld voor een hardware-register of netwerkpakket. Dan komt een packed struct goed van pas.
Normale structs voegen opvulling toe
Met een gewone struct mag Zig velden voor snelheid herschikken en opvullen. Daardoor kan de grootte in het geheugen groter zijn dan de som van de onderdelen.
const Plain = struct {
flag: bool,
value: u32,
};packed struct gebruiken
Schrijf packed struct en Zig slaat velden zonder opvulling direct achter elkaar op, in exact de volgorde waarin je ze hebt gedeclareerd.
const Tight = packed struct {
flag: bool,
value: u7,
};Alles wordt in bits opgeslagen
Een packed struct wordt gemeten in bits, niet in bytes. De bovenstaande velden gebruiken 1 + 7 bits en passen precies in één byte.
Een gegarandeerd onderliggend geheel getal
Omdat de layout exact is, heeft een packed struct gegarandeerd een type voor het onderliggende gehele getal waarin alle bits samen worden opgeslagen.
const Flags = packed struct {
a: bool,
b: bool,
rest: u6,
};Omzetten naar het gehele getal
Gebruik @bitCast om een packed struct om te zetten naar het onderliggende gehele getal, zodat je het als een onbewerkt getal kunt opslaan of verzenden.
const f = Flags{ .a = true, .b = false, .rest = 0 };
const bits: u8 = @bitCast(f);Weer terug omzetten
Met dezelfde @bitCast lees je een geheel getal terug in een packed struct. Zo worden onbewerkte bits gedecodeerd naar benoemde velden die je kunt gebruiken.
const raw: u8 = 0b0000_0001;
const f: Flags = @bitCast(raw);De exacte grootte controleren
Gebruik @bitSizeOf om te bevestigen dat een packed struct precies het verwachte aantal bits inneemt, zonder verborgen opvulling.
const n = @bitSizeOf(Flags); // 8De declaratievolgorde bepaalt de layout
In een packed struct neemt het eerste veld de laagste bits in. De volgorde is de layout, dus declareer velden precies zoals de indeling vereist.
Ideaal voor protocollen
Packed structs sluiten goed aan op binaire indelingen. Zo kun je een hardware-register of netwerkpakket beschrijven als leesbare benoemde velden.
Een afweging om te kennen
Bitverpakking kan veldtoegang iets trager maken dan bij een normale struct. Gebruik packed alleen wanneer een exacte layout echt belangrijk is. 🧩
Korte controle
Wat garandeert een packed struct over zijn velden?
Samenvatting
Je hebt geleerd dat packed struct een exacte layout zonder opvulling biedt, een onderliggend geheel getal heeft en met @bitCast kan worden omgezet. Perfect voor binaire indelingen. 🎉
Leer Zig met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 30
- Lessen
- 120
Veelgestelde vragen
Is de les “packed struct voor exacte layout” gratis?
Ja — de volledige tekst van “packed struct voor exacte layout” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Zig Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Zig Academy bevat in totaal 4 lessen.
Wat leer ik in “packed struct voor exacte layout”?
Leg bits zonder opvulling vast Je oefent met Zig Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Zig Academy te beginnen?
Ervaring vooraf is niet nodig. Zig Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.
Hoe lang duurt de les “packed struct voor exacte layout”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Zig Academy?
Ja. Elke les over Zig Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- packed struct voor exacte layout
- Gehele getallen met willekeurige bitbreedte, zoals u3
- Bitvelden en flags
- extern struct en ABI-layout