Anhang B. Sprungtabelle
Aus Gründen der Kürze zeigt diese Sprungtabelle keine Anfangsbytes, die für künftige Erweiterungen reserviert sind. Sie zeigt außerdem nur eine Auswahl der Anfangsbytes, die für optionale Merkmale verwendet werden können. (Alle vorzeichenlosen ganzen Zahlen sind in Netzwerk-Byte-Reihenfolge.)
| Byte | Struktur/Semantik |
|---|---|
| 0x00..0x17 | Ganze Zahl 0x00..0x17 (0..23) |
| 0x18 | Vorzeichenlose ganze Zahl (es folgt ein Ein-Byte-uint8_t) |
| 0x19 | Vorzeichenlose ganze Zahl (es folgen zwei Byte uint16_t) |
| 0x1a | Vorzeichenlose ganze Zahl (es folgen vier Byte uint32_t) |
| 0x1b | Vorzeichenlose ganze Zahl (es folgen acht Byte uint64_t) |
| 0x20..0x37 | Negative ganze Zahl -1-0x00..-1-0x17 (-1..-24) |
| 0x38 | Negative ganze Zahl -1-n (es folgt ein Ein-Byte-uint8_t für n) |
| 0x39 | Negative ganze Zahl -1-n (es folgen zwei Byte uint16_t für n) |
| 0x3a | Negative ganze Zahl -1-n (es folgen vier Byte uint32_t für n) |
| 0x3b | Negative ganze Zahl -1-n (es folgen acht Byte uint64_t für n) |
| 0x40..0x57 | Byte-Zeichenfolge (es folgen 0x00..0x17 Byte) |
| 0x58 | Byte-Zeichenfolge (ein Ein-Byte-uint8_t für n, dann folgen n Byte) |
| 0x59 | Byte-Zeichenfolge (zwei Byte uint16_t für n, dann folgen n Byte) |
| 0x5a | Byte-Zeichenfolge (vier Byte uint32_t für n, dann folgen n Byte) |
| 0x5b | Byte-Zeichenfolge (acht Byte uint64_t für n, dann folgen n Byte) |
| 0x5f | Byte-Zeichenfolge, es folgen Byte-Zeichenfolgen, abgeschlossen durch "break" |
| 0x60..0x77 | UTF-8-Zeichenfolge (es folgen 0x00..0x17 Byte) |
| 0x78 | UTF-8-Zeichenfolge (ein Ein-Byte-uint8_t für n, dann folgen n Byte) |
| 0x79 | UTF-8-Zeichenfolge (zwei Byte uint16_t für n, dann folgen n Byte) |
| 0x7a | UTF-8-Zeichenfolge (vier Byte uint32_t für n, dann folgen n Byte) |
| 0x7b | UTF-8-Zeichenfolge (acht Byte uint64_t für n, dann folgen n Byte) |
| 0x7f | UTF-8-Zeichenfolge, es folgen UTF-8-Zeichenfolgen, abgeschlossen durch "break" |
| 0x80..0x97 | Array (es folgen 0x00..0x17 Datenelemente) |
| 0x98 | Array (ein Ein-Byte-uint8_t für n, dann folgen n Datenelemente) |
| 0x99 | Array (zwei Byte uint16_t für n, dann folgen n Datenelemente) |
| 0x9a | Array (vier Byte uint32_t für n, dann folgen n Datenelemente) |
| 0x9b | Array (acht Byte uint64_t für n, dann folgen n Datenelemente) |
| 0x9f | Array, es folgen Datenelemente, abgeschlossen durch "break" |
| 0xa0..0xb7 | Map (es folgen 0x00..0x17 Paare von Datenelementen) |
| 0xb8 | Map (ein Ein-Byte-uint8_t für n, dann folgen n Paare von Datenelementen) |
| 0xb9 | Map (zwei Byte uint16_t für n, dann folgen n Paare von Datenelementen) |
| 0xba | Map (vier Byte uint32_t für n, dann folgen n Paare von Datenelementen) |
| 0xbb | Map (acht Byte uint64_t für n, dann folgen n Paare von Datenelementen) |
| 0xbf | Map, es folgen Paare von Datenelementen, abgeschlossen durch "break" |
| 0xc0 | Textbasierte Datums-/Zeitangabe (es folgt ein Datenelement; siehe Abschnitt 2.4.1) |
| 0xc1 | Epochenbasierte Datums-/Zeitangabe (es folgt ein Datenelement; siehe Abschnitt 2.4.1) |
| 0xc2 | Positives Bignum (es folgt das Datenelement "Byte-Zeichenfolge") |
| 0xc3 | Negatives Bignum (es folgt das Datenelement "Byte-Zeichenfolge") |
| 0xc4 | Dezimalbruch (es folgt das Datenelement "Array"; siehe Abschnitt 2.4.3) |
| 0xc5 | Bigfloat (es folgt das Datenelement "Array"; siehe Abschnitt 2.4.3) |
| 0xc6..0xd4 | (mit Tag versehenes Element) |
| 0xd5..0xd7 | Erwartete Konvertierung (es folgt ein Datenelement; siehe Abschnitt 2.4.4.2) |
| 0xd8..0xdb | (weitere mit Tag versehene Elemente, es folgen 1/2/4/8 Byte und dann ein Datenelement) |
| 0xe0..0xf3 | (einfacher Wert) |
| 0xf4 | False |
| 0xf5 | True |
| 0xf6 | Null |
| 0xf7 | Undefined |
| 0xf8 | (einfacher Wert, es folgt ein Byte) |
| 0xf9 | Gleitkommazahl mit halber Genauigkeit (Zwei-Byte-IEEE 754) |
| 0xfa | Gleitkommazahl mit einfacher Genauigkeit (Vier-Byte-IEEE 754) |
| 0xfb | Gleitkommazahl mit doppelter Genauigkeit (Acht-Byte-IEEE 754) |
| 0xff | "break"-Stoppcode |
Tabelle 5: Sprungtabelle für das Anfangsbyte