Basic Encoding Rules: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 112:
In definitiva in questo caso T = 0xDF81FA ed è di 3 bytes
=== Codifica di L ===
Line 122 ⟶ 123:
#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)' in esadecimale </br>
Il limite di 127 bytes è dato dal fatto che 127 è 0x7F in esadecimale e quindi il primo bit di L è sicuramente zero.
Ciò è utile in fase di Decoding
</br>
===== Caso 2: L in più bytes =====
Line 134 ⟶ 135:
#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))+ 0x81
#si pone nei bytes seguenti 'Len(V)'
La formula del punto 3 ha la seguente giustificazione:
*aggiungendo 0x80 si pone il primo bit del primo byte di L ad essere 1. Cio' serve in fase di Decoding per capire che stiamo usando una codifica di L su più bytes.
*aggiungendo 0x01 si ha che nei primi 7 bits del primo byte di L c'è in realtà la lunghezza di L in termini di byte, infatti <math>Len(Len(V))+ 1
=== Codifica di V ===
|