Go Down

Topic: Calcolo checksum 1 byte (Read 1 time) previous topic - next topic

mancio

si scusa..modifico il post!!!

Plexi47

Perfetto,funziona
Grazie ++++

leo72

Fare un test per controllare se un tipo byte sia maggiore di 256 è inutile perché un tipo byte può contenere solo un numero da 0 a 255.
Se si somma ad una variabile un valore maggiore di quello che può contenere, essa va in overflow, per cui se si fa ad esempio 250+10 il risultato sarà 4 e non 260, si potrebbe evitare quell'operazione modulo (%).

uwefed

La somma non é un modo buono di fare un checksum. Non si possono rivelare una inversione di 2 valori.
Ciao Uwe

qsecofr


io farei cosi allora

Code: [Select]


byte CheckSum(byte arr[], int dim_array){
  byte total = 0;
 
  for(int i=0; i<dim_array; i++)
           total = (total + arr[i]);

  if(total>256) //100h = 256;
     total = total % 256;

  return total
}



il total è rimasto dichiarato byte... non supera mai il 256... sommando fa overflow...

Go Up