Basic Encoding Rules: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 106:
CLASS = 11
P\C = 0
Tag = 11111 --> <math>primobyte = 0b11011111= 0xDF</math>
 
Altri byte (come abbiamo visto in precedenza) sono pari a 0x81FA perchè <math>ID = 250</math>
Riga 114:
 
=== Codifica di L ===
LaIn codificaquesta disezione Lsi è strettamente legata alla lunghezza del dato codificato V. Infatti <small>indicandoindica con 'Len(V)' il numero di bytes di V. <\small/br>:
La codifica di L è strettamente legata alla lunghezza del dato codificato V.
#se <math>Len(V)<127 \,\!</math> allora L viene codificato in 1 byte
Se si conosce a priori 'Len(V)' allora si procede con la codifica 'definite length', altrimente si applica la codifica 'indefinite length'. La prima tecnica è preferibile in quanto permette un Decoding più semplice.
 
==== Encoding 'definite length' ====
In questo tipo di encoding si distinguono 2 casi distinti:
#se <math>Len(V)<127 \,\!</math> allora L viene codificato in 1 byte
#se <math>Len(V)>127</math> allora L viene codificato in più byte
 
 
===== Caso 1: L in 1 byte =====
Questo è il caso più semplice. V è codificato in meno di 127 bytes ed L contiene esclusivamente il valore di 'Len(V)' </br>
Quindi se ad esempio V è codificato su 120 bytes allora <math>L = 0x78</math>
 
 
===== Caso 2: L in più bytes =====
In questo caso si procede nel seguente modo:
#si codifica in binario 'Len(V)'
#si calcola <math>Len(Len(V)) \,\!</math>, cioè la lunghezza in bytes di 'Len(V)'
#si pone nel primo byte di L <math>Len(Len(V))+129 \,\!</math>
#si pone nei bytes seguenti 'Len(V)'
 
 
=== Codifica di V ===