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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.