/ Datendarstellung & Speicher

Speicherbedarf String (UTF-8)

UTF-8 kodiert variabel mit 1–4 Byte pro Codepoint: Speicher = Zeichen · ByteProZeichen. Lateinische Buchstaben 1 Byte, Umlaute 2 Byte, CJK 3 Byte, Emoji bis 4 Byte.

Speicherbedarf String (UTF-8)
01 · Eingabe

Speicherbedarf String (UTF-8) berechnen

UTF-8 kodiert variabel mit 1–4 Byte pro Codepoint: Speicher = Zeichen · ByteProZeichen. Lateinische Buchstaben 1 Byte, Umlaute 2 Byte, CJK 3 Byte, Emoji bis 4 Byte.

Lösen für
Speicher = Zeichen · ByteProZeichen
Byte

Worum geht es?

UTF-8 ist eine variable Längen-Kodierung für Unicode. Jeder Codepoint belegt zwischen 1 und 4 Byte:

  • 1 Byte: ASCII (U+0000 bis U+007F) — englisches Alphabet, Ziffern, Steuerzeichen
  • 2 Byte: Latin-Erweiterungen (Umlaute, Akzente), griechisch, kyrillisch, arabisch, hebräisch
  • 3 Byte: CJK (Chinesisch, Japanisch, Koreanisch), die meisten anderen Schriften der BMP
  • 4 Byte: Emoji, mathematische Symbole außerhalb der BMP, historische Schriften

Für eine Schätzung mittelt man ByteProZeichen über den Textinhalt: Speicher = Zeichen · ByteProZeichen.

Die Formel

Formel Speicherbedarf UTF-8
Speicher = Zeichen · ByteProZeichen

Umstellungen:
    Zeichen        = Speicher / ByteProZeichen
    ByteProZeichen = Speicher / Zeichen

Die Variablen

SymbolBedeutungEinheitErklärung
ZeichenZeichenanzahlAnzahl der Codepoints im String.
ByteProZeichenByte pro ZeichenByteDurchschnittliche Bytes pro Zeichen (1–4).
SpeicherSpeicherbedarfByteSpeicherbedarf in Byte.

Minimal-Beispiel

Der String "Hallo Wörld" enthält 11 Zeichen, davon 1 Umlaut (2 Byte):

Rechnung Hallo Wörld
Speicher = 10 · 1 + 1 · 2
         = 12 Byte

Praxis-Beispiele

Beispiel 1 — Deutscher Text

Ein Text mit 1000 Zeichen, im Schnitt 1,05 Byte pro Zeichen (wenige Umlaute):

Rechnung 1000 Zeichen DE
Speicher = 1000 · 1,05
         = 1050 Byte

Beispiel 2 — Chinesischer Text

500 chinesische Zeichen à 3 Byte:

Rechnung CJK
Speicher = 500 · 3
         = 1500 Byte

Beispiel 3 — Tweet mit Emoji

Ein Tweet aus 200 lateinischen Zeichen + 10 Emoji (à 4 Byte):

Rechnung Tweet
Speicher = 200 · 1 + 10 · 4
         = 240 Byte