Uint8 t (C-Datentyp): Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
PhilKa (Diskussion | Beiträge) |
PhilKa (Diskussion | Beiträge) |
||
| Zeile 75: | Zeile 75: | ||
== Verwendung == | == Verwendung == | ||
<code>uint8_t</code> wird häufig eingesetzt für: | <code>uint8_t</code> wird häufig eingesetzt für: | ||
'''Byteweise Datenverarbeitung''' | |||
<syntaxhighlight lang="c"> | <syntaxhighlight lang="c"> | ||
uint8_t buffer[10]; | uint8_t buffer[10]; | ||
| Zeile 81: | Zeile 82: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
'''Kommunikation mit Hardware-Registern''' | |||
(z. B. in Mikrocontrollern oder Embedded-Systemen) | (z. B. in Mikrocontrollern oder Embedded-Systemen) | ||
<syntaxhighlight lang="c"> | <syntaxhighlight lang="c"> | ||
| Zeile 87: | Zeile 88: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
'''Netzwerk- und Protokollimplementierungen''' | |||
(z. B. IP-Header, Checksummen) | (z. B. IP-Header, Checksummen) | ||
'''Binäre Dateiverarbeitung''' | |||
<syntaxhighlight lang="c"> | <syntaxhighlight lang="c"> | ||
FILE* f = fopen("data.bin", "rb"); | FILE* f = fopen("data.bin", "rb"); | ||
| Zeile 97: | Zeile 98: | ||
fclose(f); | fclose(f); | ||
</syntaxhighlight> | </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