Basic Encoding Rules: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 125:
===== 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.
Quindi se ad esempio V è codificato su 120 bytes allora <math>L = 0x78</math>▼
Ciò è utile in fase di Decoding. Se il primo bit è zero, significa che è stata usata la codifica di L su un solo byte. </br>
▲Quindi se ad esempio V è codificato su 120 bytes allora <math>L = 0x78</math> </br>
===== Caso 2: L in più bytes =====
Line 133 ⟶ 134:
#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))+
#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 \,\!</math> indica proprio la lunghezza di L
=== Codifica di V ===
|