Basic Encoding Rules: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Errore nella condizione del campo length Etichette: Modifica visuale Modifica da mobile Modifica da web per mobile |
|||
(13 versioni intermedie di 11 utenti non mostrate) | |||
Riga 1:
{{W|informatica|ottobre 2023}}
'''Basic Encoding Rules''' (abbreviazione '''BER''') è un sistema di codifica composto da una serie di regole per la conversione di dati eterogenei in flussi di [[byte]].▼
▲'''Basic Encoding Rules''' (abbreviazione '''BER''') è un sistema di [[Codice (teoria dell'informazione)|codifica]] composto da una serie di regole per la conversione di dati eterogenei in flussi di [[byte]].
La codifica BER è strettamente legata allo standard [[ASN.1]] ed è utilizzata per le comunicazioni [[Simple Network Management Protocol|SNMP]] e [[Lightweight Directory Access Protocol|LDAP]].
Riga 11 ⟶ 13:
Quindi ad esempio per codificare il dato 7 come INTERO occorreranno 3 bytes:
*il primo che indica il ''Type'' (INTERO = 02₁₆);
*il terzo è la codifica del dato INTERO secondo le regole BER (in questo caso 07₁₆);▼
*il secondo che indica la ''Length'' di v (in questo caso = 01₁₆).
▲*il terzo è la codifica del dato INTERO secondo le regole BER (in questo caso 07₁₆);
In definitiva INTEGER 7 in BER diviene 020107₁₆ dove si distinguono chiaramente T,L e V.
Riga 20 ⟶ 22:
Come si 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 informazioni a tal proposito consultare [
== Codifica BER ==
Riga 64 ⟶ 66:
==== Altri byte di T ====
Per codificare gli altri byte si procede nel seguente modo:
#si converte
#si aggiunge un '''1''' ogni 7 bit
#si completa il byte con un
NB !!!
[[File:Altribytes T.JPG|thumb|upright=2.3|center|Altri bytes di T]]
Riga 74 ⟶ 76:
Ad es. se ID = 250 in base 10, allora:
#<math>250_{10} = FA_{16} = 11111010_2</math>
#<math>11111010 -> 1
#<math>1
In definitiva ID = 250 viene codificato con <math>81FA_{16}</math>
Riga 87 ⟶ 89:
:''CLASS'' = 00
:''P\C'' = 0
:''Tag'' = 00010
da cui se segue:
Riga 113 ⟶ 115:
==== Encoding di L 'definite length' ====
In questo tipo di encoding si distinguono 2 casi distinti:
#se <math>Len(V)<=127</math> allora ''L'' viene codificato in 1 byte (''short definite form'')
#se <math>Len(V)>
===== Caso 1: ''L'' in 1 byte - ''short definite form'' =====
Riga 121 ⟶ 123:
Il limite di 127 byte è dato dal fatto che 127 è 7F 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.
[[File:Short Defined Form L.JPG|thumb|center|L in Short Defined Form]]
Riga 166 ⟶ 168:
=== Codifica di V ===
La codifica di ''V'', come è stato più volte detto, dipende dal tipo ''T'' e dalla sua definizione tramite sintassi [[ASN.1]] In questa sede sarà illustrata la codifica dei 3 tipi principali: INTEGER, OCTECT STRING e OBJECT ID. Per una panoramica completa di codifica decodifica si rimanda ancora a [https://web.archive.org/web/20081205052919/http://www.oss.com/asn1/booksintro.html OSS Nokalva - Books Overview] o [https://web.archive.org/web/20081205052919/http://www.oss.com/asn1/booksintro.html
==== Codifica di ''INTEGER'' ====
La codifica di un dato INTEGER dipende dal suo segno. Il primo bit del primo byte codificato è detto ''bit segno''. Se questo è 0 allora il numero è positivo, altrimenti è negativo.
===== INTEGER Positivi =====
Riga 188 ⟶ 190:
* <math>\left |valore \right | =\left |-100 \right | = 100_{10} = 01100100_2</math> <small>(vedi es. INTEGER Positivi)</small>
* complemento a 1: <math>01100100_2 -> 10011011_2</math>
* aggiungere <math>+ 1_2</math>. Si
Quindi <math>valore = -100 \to V = 10011100_2 = 9C_{16} </math>
Riga 226 ⟶ 228:
* [[Simple Network Management Protocol]]
* [[Lightweight Directory Access Protocol]]
== Altri progetti ==
{{interprogetto}}
== Collegamenti esterni ==
[[Categoria:Codifica]]▼
{{Portale|Informatica}}
▲[[Categoria:Codifica]]
|