2011-02-11 10 views
5

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).

Respuesta

2

Creo que esto es solo una cuestión de indexación.

Contenido El octeto n. ° 1 contiene algunas cosas (tipo de codificación, bit de signo, base, factor de escala y formato de exponente).

Si el formato de exponente es '11', el siguiente octeto (Octeto de contenido n. ° 2) contiene un número X que representa el número de octetos utilizados para codificar el valor del exponente. El tercer Octeto de contenido contiene parte del valor del exponente. El último contenido del octeto es x + 3.

CO1 (cosas) CO2 (x) CO3 (valor del exponente) ... CO [x + 3]

El valor mínimo de x es 1. Si x = 1 entonces CO [x + 3] = CO4, lo que significa que el número mínimo de octetos de contenido para el valor del exponente es dos. La representación más corta de esta forma es

CO1 CO2 CO3 CO4

eso significaría que '09 00' no es una codificación válida de la sección 8.5.6. Como es '09 01 04 ', y '09 01 41'.

El PLUS-INFINITO y MINUS-INFINITY están codificados según las reglas de la sección 8.5.8 que no es compatible con las reglas de la sección 8.5.6.

codificación cero por las reglas de la sección 8.5.6 va como esto

CO1:8 = 1  (Content Octet #1 bit 8) 
CO1:7 = x = 0 (Content Octet #1 bit 7 is dont care, but I'll use 0 for positive) 
CO1:65 = 00  (Content Octet #1 bits 6 and 5 is 00 for base two) 
CO1:43 = x = 01 (Content Octet #1 bits 4 and 3 is scaling factor, so we don't care but I'll make it 01 for a value of one) 
CO1:21 = 11  (Content Octet #1 bits 2 and 1 is the exponent format and '11' is the format in question) 

tan contenido Octeto # 1 = 1000 0111 es 0x87

contenido Octeto # 2 = 0x01 (desde el valor más pequeño de X es 1)

contenido Octeto # 3 = 0x00

contenido Octeto # 4 = 0x01

octetos contenido # 3 y # 4 dar un valor de exponente 1

(cero * uno)^uno = cero

0

NaN se define en 8.5.9 junto a Infinity y sería 09 01 42

Este

09 06 83 00 00 00 01 fc = 0,0625 (binario, 0x000001 * 2^-4)

es según 8.5.7.4 d) no es válida, el CO2 (X) "deberá por lo al menos se uno ". Pero también obtengo tu resultado cuando ignoro estas limitaciones.

Mejor: 09 03 80 fc 01 = 0.0625 (binario, 0x01 * 2^-4)

Cuestiones relacionadas