Algoritmo - Checksum Del Número De Serie (UA)

08 julio 2008

Nuestro amigo Oraldin está generoso y comparte con nosotros la siguiente info de la V10:

Algoritmo - Checksum Del Número De Serie (UA):

(By oraldin)

Puesto que he visto ejemplos que pudiesen dar lugar a confusión y aunque cualquier buen programa debe de dar los ocho bytes de la UA, para el que tenga interés os pongo a continuación el algoritmo siguiente:

ALGORITMO PARA OBTENER EL CHECKSUM DEL NÚMERO DE SERIE.

Se efectúa todo en decimal y al final se convierte el checksum a hexadecimal

1) Se divide el núm. de serie por 2300 y se obtiene el resto. Al resto le llamaremos "abcd" que es un número comprendido entre 0 y 2300.
2) Separamos el número "abcd" en dos grupos: "ab" , "cd"
3) Se suma "ab" + "cd" y se obtiene un número ("efg") que está comprendido entre 0 y 198
4) Las dos últimas cifras ("fg") del número anterior se pasan a Hexadecimal y el resultado que se obtiene es el checksum.

Ejemplos:

ns = núm. de serie
abcd = ns – (parte entera de (ns / 2300) * 2300)

1) Sea el núm. de serie ns = 123.456.789
a)123.456.789 - 53676 * 2300 = 1989 (53676 es la parte ENTERA de dividir 123456789 por 2300 y 1989 es el RESTO).
O lo que es lo mismo:
123.456.789 = 53676 * 2300 + 1989

abcd = 1989 ------> 19 89
ab = 19
cd = 89
ab + cd = 19 + 89 = 108 = 0108 -----> 01 08
fg = 08
08 (dec) = 08 (hex) = checksum
por tanto, el registro correspondiente al num. de serie sería:
00 08 00 07 5B CD 15
donde 07 5B CD 15 es el número 123.456.789 en hexadecimal y 08 el checksum.

3) Sea el núm. de serie = 444.444.444
b)444.444.444 = 193236 * 2300 + 1644
ab = 16
cd = 44
ab + cd = 16 + 44 = 60 = 060 -----> 00 60
60 (dec) = 3C (hex) = checksum
y el registro sería: 00 3C 00 00 1A 7D AF 1C

nota.- los pasos a y b, es lo mismo que poner el número y pulsar mod 2300 en la calculadora científica.

Saludos.

0 comentarios: