Basic Encoding Rules: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 45:
==== Primo byte di T ====
Vediamo qui sotto come si presenta il primo byte di T:
[[immagine:BERPrimobyte_T.JPG |thumb|300px|center|Primo byte di T]]
 
La codifica di CLASS segue la seguente tabella:
Riga 128:
Il limite di 127 bytes è dato dal fatto che 127 è 0x7F in esadecimale (01111111 in binario) e quindi il primo bit di ''L'' è sicuramente zero.
Ciò è utile in fase di Decoding, infatti se il primo bit è zero, significa che è stata usata la codifica di L su un solo byte.
[[immagine:Short_Defined_Form_L.JPG |thumb|300px|center|L in Short Defined Form]]</br>
===== Caso 2: ''L'' in più bytes ''long definite form'' =====
In questo caso si procede nel seguente modo:
Riga 139:
*aggiungendo 0x80 si pone il primo bit del primo byte di L ad essere 1.
*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 </br>
[[immagine:Long_Defined_Form_L.JPG |thumb|700px650px|center|L in Long Defined Form]]</br>
In fase di Decoding per capire che stiamo usando una codifica di L su più bytes di tipo ''long definite form'' deve quindi essere:
*il primo bit del primo byte di ''L''= 1
Riga 149:
''V'' è codificato su 1000 bytes.</br> Poichè <math>1000>127</math> deve essere quindi usata la ''long definite form''</br>Quindi:
#<math>Len(V)= 1000_10 = 0x3E8 = 0x03E8</math>
#<math>Len(Len(V)) = 2_102_{10} = 0x02</math>
#<math>byte 1 di L = Len(Len(V)) + 0x81 = 0x83 = 10000011_2</math>
#<math>bytes 2,3 di L = ''Len(V)'' = 0x03E8</math></br>
In definitiva:<math>L = 0x8303E8</math> ed è di <math>Len(Len(V)) + 1 = 2 + 1 = 3 bytes</math>
 
=== Codifica di V ===