Basic Encoding Rules: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Riga 20:
=== BER e ASN.1 ===
BER è strettamente legata ad ASN.1 soprattutto per quanto riguarda i tipi di dati.
Come si puo'può immaginare la codifica di V dipende dal tipo T.
Ci sono alcuni tipi predefiniti in ASN.1 (si dice che sono ''Tag appartenenti alla Class UNIVERSAL'').
Per maggiori info a tal proposito consultare [http://www.oss.com/asn1/booksintro.html] o [http://www.oss.com/asn1/booksintro.html]
Riga 115:
In questa sezione si indica con ''Len(V)'' il numero di bytes di ''V''. </br>
La codifica di L è strettamente legata alla lunghezza del dato codificato ''V''.
Se si conosce a priori ''Len(V)'' allora si procede con la codifica ''definite length'', altrimentealtrimenti si applica la codifica ''indefinite length''. La prima tecnica è preferibile in quanto permette un Decoding più semplice.
 
==== Encoding di L 'definite length' ====
Riga 160:
*si aggiunge ''V''
*in coda a ''V'' si aggiungono 2 bytes di zeri <math>0000_{16}</math>
 
 
 
=== Codifica di V ===
La codifica di ''V'', come è stato più volte detto, dipende tal tipo ''T'' e dalla sua definizione tramite sintassi [[ASN.1]] In questa sede sara' illustrata la codifica dei 3 tipi principali: INTEGER, OCTECT STRING e OBJECT ID. Per una panoramica completa di codifica decodifica si rimanda ancora a [http://www.oss.com/asn1/booksintro.html] o [http://www.oss.com/asn1/booksintro.html] </br>
 
 
==== Codifica di ''INTEGER'' ====
Riga 178 ⟶ 175:
 
===== INTEGER Negativi =====
Per gli integer negativi si utlizzautilizza il [[Complemento_a_due|''Complemento a due'']] del valore. Ciò assicura che il ''bit segno'' è sempre negativo.
In particolare i passi da seguire sono:
* si codifica <math>\left |valore \right |</math> con le regole indicate sopra
* si calcola il ''Complemento a uno'' cioè si nega bit a bit
* si aggiunge infine al numero ottenuto <math>+ 1_2</math> </br>
 
 
Ad esempio se valore = -100 si ha:
Riga 190 ⟶ 186:
* aggiungere <math>+ 1_2</math>. Si ottine <math>10011011_2 + 1_2 = 10011100_2</math></br>
Quindi <math>valore = -100 \to V = 10011100_2 = 9C_{16} \,\!</math></br></br>
 
 
Se invece valore = -250 si ha: