Uint8 t (C-Datentyp)
uint8_t (C-Datentyp)
Der Datentyp uint8_t ist ein standardisierter Ganzzahltyp aus der C-Standardbibliothek <stdint.h>.
Er wurde mit dem C99-Standard eingeführt und steht für einen genau 8 Bit breiten, vorzeichenlosen Integerwert.
---
Bedeutung
#include <stdint.h>
uint8_t x;
- u = unsigned (ohne Vorzeichen)
- int = Ganzzahl
- 8_t = 8 Bit breit (Typ-Suffix für definierte Bitbreite)
Damit garantiert uint8_t auf jeder Plattform eine exakt 8 Bit (1 Byte) große Ganzzahl – unabhängig von Architektur oder Compiler.
---
Wertebereich
0 bis 255
Dies ergibt sich aus 2⁸ möglichen Werten, da alle 8 Bits zur Darstellung positiver Zahlen verwendet werden.
---
Vergleich zu anderen Ganzzahltypen
| Typ | Größe (Bits) | Bereich | Vorzeichen | Header |
|---|---|---|---|---|
int8_t |
8 | −128 … 127 | ja | <stdint.h>
|
uint8_t |
8 | 0 … 255 | nein | <stdint.h>
|
uint16_t |
16 | 0 … 65.535 | nein | <stdint.h>
|
uint32_t |
32 | 0 … 4.294.967.295 | nein | <stdint.h>
|
uint64_t |
64 | 0 … 18.446.744.073.709.551.615 | nein | <stdint.h>
|
Zweck
Die Typen aus `<stdint.h>` wurden eingeführt, um:
- eine portierbare Darstellung von Datentypen zu gewährleisten,
- feste Bitbreiten für hardwarenahe oder netzwerkbezogene Programmierung zu definieren,
- eine klare Trennung zwischen signierten und unsignierten Werten zu ermöglichen.
---
Beispiel
#include <stdio.h>
#include <stdint.h>
int main() {
uint8_t a = 255;
printf("Wert von a: %u\n", a);
return 0;
}
Ausgabe:
Wert von a: 255
---
Verwendung
uint8_t wird häufig eingesetzt für:
Byteweise Datenverarbeitung
uint8_t buffer[10];
buffer[0] = 0xFF;
Kommunikation mit Hardware-Registern z. B. in Mikrocontrollern oder Embedded-Systemen
uint8_t port_value = read_register(PORTA);
Netzwerk- und Protokollimplementierungen z. B. IP-Header, Checksummen
Binäre Dateiverarbeitung
FILE* f = fopen("data.bin", "rb");
uint8_t byte;
fread(&byte, sizeof(uint8_t), 1, f);
fclose(f);
Hinweise
- Entspricht auf den meisten Plattformen dem Typ
unsigned char, aber mit garantierter Bitbreite (8 Bit). - Wird durch den C99-Standard bereitgestellt – ältere Compiler (< C99) kennen ihn ggf. nicht.
- Kann sicher mit Funktionen wie
printf()und Formatzeichen%uausgegeben werden (implizite Umwandlung zu int).
---
Verwandte Typen
- int8_t – vorzeichenbehaftete 8-Bit-Ganzzahl
- uint16_t – 16-Bit ohne Vorzeichen
- uint32_t – 32-Bit ohne Vorzeichen
- uint64_t – 64-Bit ohne Vorzeichen
- stddef.h – allgemeine Standardtypen
- stdint.h – Header-Datei für feste Breiten
---
Siehe auch
---
Quellen
- ISO/IEC 9899:2018 (C18) – Programming Language C
- The GNU C Library – Header `<stdint.h>`
- Stevens, W. Richard: Advanced Programming in the UNIX Environment
- Linux Man Pages:
man stdint