0 Tage Serie
c / intermediate
Snippet

Effizientes Packen von Daten mit Bitfeldern

Bitfelder ermöglichen die Definition von Strukturmitgliedern mit einer spezifischen Bitanzahl, um Speicher zu sparen oder Hardware-Register abzubilden.

snippet.c
c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
struct FilePermissions {
unsigned int read : 1;
unsigned int write : 1;
unsigned int execute : 1;
unsigned int owner_id : 5;
};
int main() {
struct FilePermissions p = {1, 0, 1, 15};
printf("Size: %zu bytes\n", sizeof(p));
if (p.read) printf("Read access granted.\n");
return 0;
}
Erklärung
1
unsigned int read : 1;
Allokiert genau 1 Bit für das 'read'-Mitglied.
2
unsigned int owner_id : 5;
Allokiert 5 Bit, was Werte von 0 bis 31 erlaubt.