Calculo del Checksum

358 views
Skip to first unread message

Cristian Gonzalez

unread,
Mar 24, 2016, 8:05:39 AM3/24/16
to 7542 - Taller de Programación
Hola estoy intentado programarlo y hay varias cosas que no llego a entender.

Primero 
En la sumatoria se suma valores numéricos donde cada byte sería un número no? Entonces la idea es sumar el valor ASCII de cada byte?

Sería algo así? 

Voy leyendo de a 3 bytes (block_size = 3) y tengo abc

Sería lower = ( ASCII(a) + ASCII(b) + ASCII(c) ) mod M

B - 1 = 2

higher = 3-0 * ASCII (a) + 3-1*ASCII(b) + 3-2*ASCII(c) Mod M

checksum = lower + (higher*M) 

Y al checksum representarlo en hexadecimal? |

Martin Di Paola

unread,
Mar 24, 2016, 11:24:07 AM3/24/16
to tallerdepr...@googlegroups.com
Efectivamente, cada byte en C es un numero. Es asi como C lo representa.
Solo para dejarlo en claro:

char c = 'A';

En memoria, la variable c ocupa 1 byte (depende le la arquitectura y compilador) y tiene el pattern 0b01000001 en bits. Para los humanos es mejor verlo desde otro angulo:  65 en decimal o 0x41 en hexadecimal. Pero son los mismos bits.

Por lo tanto, C maneja a ese byte como un numero y solo un numero. Si hacemos:

char c2 = c + 2;

 entonces c2 tiene el valor 65+2 = 67 en decimal o 0x43 en hexa. Viendo ese byte como un caracter ASCII seria la letra 'C'.

Respecto a la pregunta de si el checksum hay que representarlo en hexa, yo repregunto, en donde se pide semejante cosa? o en donde crees que te hace falta? No implementes cosas que no se piden!

Saludos!!

--
Has recibido este mensaje porque estás suscrito al grupo "7542 - Taller de Programación" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a tallerdeprograma...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a tallerdepr...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/tallerdeprogramacion.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Cristian Gonzalez

unread,
Mar 24, 2016, 6:35:21 PM3/24/16
to tallerdepr...@googlegroups.com

En el ejemplo dice que el checksum de 'aa' es 012300C2h

Saludos.

Martin Di Paola

unread,
Mar 24, 2016, 7:09:14 PM3/24/16
to tallerdepr...@googlegroups.com

Es correcto. El resultado del checksum lo escribi en hexa en el enunciado con el unico fin de que puedan corroborar el valor.
El tp no lo pide en ningun lado.

De igual modo escribi que bytes se envian por socket en hexa pero eso no significa que el tp tiene que hacer un print en hexa del mismo.

Saludos!!

On Mar 24, 2016 7:35 PM, "Cristian Gonzalez" <cristi...@gmail.com> wrote:

En el ejemplo dice que el checksum de 'aa' es 012300C2h

Saludos.

--
Reply all
Reply to author
Forward
0 new messages