He estado leyendo¿Cómo debo interpretar el estándar ASN.1 BER para los REALES?
- X.690 "Tecnología de la información - Reglas de codificación ASN.1: Especificación de las reglas de codificación básica (BER), Canonical Encoding Rules (CER) y reglas de codificación distinguida (DER)"
En particular, §8.5.6.4 (d), en relación con una codificación binaria de los valores reales con una mantisa de longitud variable y exponente, dice lo siguiente:
"si los bits 2 a 1 son 11, luego la segunda c ndice octeto codifica el número de octetos, X decir, (como un número binario sin signo) utilizado para codificar el valor del exponente, y el tercero hasta la (X más 3) º (inclusive) los octetos de contenido codifican el valor del exponente como un número binario de complemento a dos; el valor de X será al menos un; los primeros nueve bits del exponente transmitida no serán todos ceros o todos unos."
Este es incompatible, en los octetos de 'la tercera hasta la (X plus 3) [rd]' es en realidad X + 1 octetos.
¿Hay alguien capaz de aclarar esta sección?
supongo que debería leer cualquier
" ... entonces el segundo octeto de contenido codifica uno menos que el número de octetos, X decir, ... "
o
" ... la tercera hasta la (X más 2) nd (inclusive) octetos de contenido ..."
Y, es el valor mínimo de X realmente 1, o es 0 significa 1 octeto?
ADDENDUM: Si alguien puede proporcionarme algunos datos de prueba de diversos valores codificados en BER (cadenas de octetos con sus significados) que serían útiles.
Lo que hasta ahora tenemos es
- 09 00 = 0 (cero)
- 09 01 40 = + INF (infinito)
- 09 01 41 = -INF
- 09 08 03 2b 31 2e 30 65 2b 30 = "+ 1.0e + 0" = 1.0 (decimal exacto)
- 09 05 80 fe 55 55 55 = 1398101.25 (binario, 0x555555 * 2^-2)
Un ejemplo que no estoy seguro es de:
- ? 09 06 83 00 fc 00 00 01 = 0.0625 (binario, 0x000001 * 2^-4)?
Además, parece que no hay codificación definida para NaN (no es un número).