Basic Encoding Rules: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 57:
Il bit P\C = 0 indica il tipo PRIMITIVE (cioè un tipo semplice come INTEGER o OID)
Il bit P\C = 0 indica il tipo CONSTRUCTED (cioè un tipo composto da più tipi semplici come ad es. SEQUENCE)
I 5 byte di TAG invece:
Line 63 ⟶ 65:
*contengono 11111 se <math>ID>30</math>
Nel primo caso, come è stato già detto, il T è composto da un unico byte.
Nel secondo caso vanno invece codificati gli altri bytes di T
==== Altri bytes di T ====
Per codificare gli altri bytes si procede nel seguente modo:
#si converte ID in binario
#si aggiunge un 1 ogni 7 bit
#si completa il byte con un 1 in testa
[[immagine:Altribytes_T.JPG |thumb|center|Altri bytes di T]]
Ad es. se ID = 250 in base 10, allora:
#250 = 0xFA = 11111010
#11111010 -> 1 '''1'''1111010
#1 '''1'''1111010 -> '''1'''0000001 '''1'''1111010
In definitiva ID = 250 viene codificato con 0x81FA
==== Esempio 1 di codifica di T ====
Codifica di INTEGER. Questo è di classe UNIVERSAL ed è PRIMITIVE.
Il suo ID nella classe UNIVERSAL è 2.
<math>ID<=30</math> e quindi basterà 1 solo byte per T
Quindi:
CLASS = 00
P\C = 0
Tag = 00010
da cui se segue:
T = 0x02
==== Esempio 2 di codifica di T ====
Supponiamo di voler codificare un tipo PRIVATE e PRIMITIVEcon ID = 250
<math>ID>30</math> e quindi serviranno più bytes per T
Primo byte:
CLASS = 11
P\C = 0
Tag = 11111
primobyte = 0b11011111= 0xDF
Altri byte (come abbiamo visto in precedenza) sono pari a 0x81FA
In definitiva in questo caso T = 0xDF81FA ed è di 3 bytes
=== Codifica di L ===
|