Uint8 t (C-Datentyp): Unterschied zwischen den Versionen
PhilKa (Diskussion | Beiträge) Die Seite wurde neu angelegt: „= uint8_t (C-Datentyp) = Der Datentyp '''uint8_t''' ist ein standardisierter Ganzzahltyp aus der C-Standardbibliothek <code><stdint.h></code>. Er wurde mit dem C99-Standard eingeführt und steht für einen **genau 8 Bit breiten, vorzeichenlosen Integerwert**. --- == Bedeutung == <syntaxhighlight lang="c"> #include <stdint.h> uint8_t x; </syntaxhighlight> * '''u''' = unsigned (ohne Vorzeichen) * '''int''' = Ganzzahl * '''8_t''' = 8 Bit bre…“ |
PhilKa (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
| Zeile 2: | Zeile 2: | ||
Der Datentyp '''uint8_t''' ist ein standardisierter Ganzzahltyp aus der C-Standardbibliothek <code><stdint.h></code>. | Der Datentyp '''uint8_t''' ist ein standardisierter Ganzzahltyp aus der C-Standardbibliothek <code><stdint.h></code>. | ||
Er wurde mit dem C99-Standard eingeführt und steht für einen | Er wurde mit dem C99-Standard eingeführt und steht für einen ''genau 8 Bit breiten, vorzeichenlosen Integerwert''. | ||
--- | --- | ||
| Zeile 17: | Zeile 17: | ||
* '''8_t''' = 8 Bit breit (Typ-Suffix für definierte Bitbreite) | * '''8_t''' = 8 Bit breit (Typ-Suffix für definierte Bitbreite) | ||
Damit garantiert <code>uint8_t</code> auf jeder Plattform eine | Damit garantiert <code>uint8_t</code> auf jeder Plattform eine ''exakt 8 Bit (1 Byte)'' große Ganzzahl – unabhängig von Architektur oder Compiler. | ||
--- | --- | ||
| Zeile 43: | Zeile 43: | ||
== Zweck == | == Zweck == | ||
Die Typen aus `<stdint.h>` wurden eingeführt, um: | Die Typen aus `<stdint.h>` wurden eingeführt, um: | ||
* eine | * eine ''portierbare Darstellung von Datentypen'' zu gewährleisten, | ||
* | * ''feste Bitbreiten'' für hardwarenahe oder netzwerkbezogene Programmierung zu definieren, | ||
* eine | * eine ''klare Trennung zwischen signierten und unsignierten Werten'' zu ermöglichen. | ||
--- | --- | ||
| Zeile 70: | Zeile 70: | ||
== 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 76: | Zeile 76: | ||
</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 82: | Zeile 82: | ||
</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"); | ||
Version vom 3. November 2025, 15:53 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