Passa al contenuto principale

1. Introduzione

1. Introduzione

Il Concise Binary Object Representation (CBOR) [RFC7049] consente lo scambio di dati strutturati senza richiedere uno schema concordato in anticipo. [RFC7049] definisce un insieme di base di tipi di dato, oltre a un meccanismo di tagging che permette di estendere l’insieme dei tipi di dato supportati tramite un registro IANA.

Recentemente, una forma semplice di array tipizzati di dati numerici ha suscitato interesse sia nella comunità della grafica web [TypedArray] sia nella specifica JavaScript (vedere la Sezione 22.2 (https://www.ecma-international.org/ecma-262/10.0/index.html#sec-typedarray-objects) di [ECMA-ES10]) nonché nelle implementazioni corrispondenti [ArrayBuffer].

Poiché questi array tipizzati possono trasportare quantità significative di dati, c’è interesse nello scambiarli in CBOR senza la necessità di una lunga conversione di ciascun numero nell’array. Questo può anche ridurre l’overhead di spazio derivante dal codificare un tipo per ogni elemento di un array.

Questo documento definisce una serie di tag CBOR interrelati che coprono questi array tipizzati, oltre a tag aggiuntivi per array multidimensionali e omogenei. È inteso come documento di riferimento per la registrazione IANA dei tag definiti.

Si noti che un’applicazione che genera CBOR con questi tag ha ampia libertà nel scegliere varianti (ad esempio rispetto a endianness, tipo incorporato (con segno vs senza segno) e numero di bit per elemento) o se un tag definito in questa specifica venga usato o meno al posto di CBOR più basilare. A differenza delle varianti di rappresentazione di singoli numeri CBOR, non esiste una rappresentazione identificabile come “preferita”. Se si desidera una codifica deterministica in un protocollo basato su CBOR che faccia uso di questi tag, il protocollo deve definire quali varianti di codifica vengano usate in ciascun caso.

1.1 Terminologia

Le parole chiave "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" e "OPTIONAL" in questo documento devono essere interpretate come descritto in BCP 14 [RFC2119] [RFC8174] quando, e solo quando, appaiono tutte in maiuscolo, come mostrato qui.

Il termine "byte" è usato nel suo senso ormai consueto come sinonimo di "octet". Quando viene spiegata l’aritmetica sui bit, questo documento usa una notazione familiare del linguaggio di programmazione C [C] (inclusi i letterali binari 0bnnn di C++14 [CPlusPlus]) con l’eccezione dell’operatore "**", che indica l’elevamento a potenza.

Il termine "array" è usato in senso generale in questo documento, salvo ulteriori specifiche. Il termine "classical CBOR array" descrive un array rappresentato con il tipo principale CBOR 4. Un "homogeneous array" è un array di elementi che sono tutti dello stesso tipo (il termine è neutrale rispetto al fatto che sia un tipo di rappresentazione o un tipo del modello dati dell’applicazione).

I termini "big endian" e "little endian" sono usati per indicare, rispettivamente, una rappresentazione degli interi con il byte più significativo per primo (MSB first) e una rappresentazione con il byte meno significativo per primo (LSB first).