perl skript intapretieren.

OP #4303049
Lesenswert?

Hallo,

ich versuche momentan ein serielles Kommunikationsprotokoll zu 
implementieren. Dazu benötige ich jedoch am Ende eine Checksumme.
Leider existieren keine Herstellerangaben, jedoch habe ist ein Beispiel 
in "perl" gefunden.
1
sub checksum16 ($) {
2
# calculates the checksum 16 of the given string argument
3
  my @bytes = unpack("C*", $_[0]);
4
  my $sum = 0;
5
  foreach(@bytes) {
6
    $sum += $_;
7
    $sum %= 2**16;
8
  }
9
  return $sum;
10
}

Bedauerlicherweise habe ich mit Perl noch nie gearbeitet. Kann mir 
jemand erklären, wie die Summe berechnet wird?

MfG

pindrei
Moderator #4303097
Lesenswert?

Ja, so hätte ich gesagt. y musst du vorher natürlich noch auch 0 setzen.
y %= 65536 kann auch am Ende außerhalb der Schleife stehen, das ändert
am Ergebnis nichts. Du kannst diese Anweisung auch ganz weglassen, wenn
du y vom Typ uint16_t machst, da dann jede Addition automatisch modulo
2**16 gerechnet wird.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren