Salve,
premetto di essere un absolute newbee in C, provengo da basic a vb.net,
vorrei inserire in una funzione il calcolo del checksum ad 1 byte Mod H100,
in VBnet la funzione è questa:
Public Function CheckSum(ByVal ByteList As List(Of Byte)) As Byte
Dim total As Integer = 0
For Each b As Byte In ByteList
total = (total + b) Mod &H100
Next
Return total
End Function
quale è la "traduzione" in C ?
google non mi ha dato risposta
Intanto grazie per la risposta,
la funzione deve fare la somma BYTE PER BYTE dell'array di byte,
se nei vari passaggi il risultato è > Hex100 prende come valore l'eccedenza
e prosegue .
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
}
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 (%).