Uint8 t (C-Datentyp): Unterschied zwischen den Versionen
PhilKa (Diskussion | Beiträge) |
PhilKa (Diskussion | Beiträge) |
||
| Zeile 77: | Zeile 77: | ||
'''Byteweise Datenverarbeitung''' | '''Byteweise Datenverarbeitung''' | ||
<syntaxhighlight lang="c"> | |||
uint8_t buffer[10]; | uint8_t buffer[10]; | ||
buffer[0] = 0xFF; | buffer[0] = 0xFF; | ||
</syntaxhighlight> | |||
'''Kommunikation mit Hardware-Registern''' | '''Kommunikation mit Hardware-Registern''' | ||
z. B. in Mikrocontrollern oder Embedded-Systemen | |||
<syntaxhighlight lang="c"> | |||
uint8_t port_value = read_register(PORTA); | uint8_t port_value = read_register(PORTA); | ||
</syntaxhighlight> | |||
'''Netzwerk- und Protokollimplementierungen''' | '''Netzwerk- und Protokollimplementierungen''' | ||
z. B. IP-Header, Checksummen | |||
'''Binäre Dateiverarbeitung''' | '''Binäre Dateiverarbeitung''' | ||
<syntaxhighlight lang="c"> | |||
FILE* f = fopen("data.bin", "rb"); | FILE* f = fopen("data.bin", "rb"); | ||
uint8_t byte; | uint8_t byte; | ||
fread(&byte, sizeof(uint8_t), 1, f); | fread(&byte, sizeof(uint8_t), 1, f); | ||
fclose(f); | fclose(f); | ||
</syntaxhighlight> | |||
== Hinweise == | == Hinweise == | ||
Version vom 3. November 2025, 15:01 Uhr
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