Thread Wie generiert Ihr eine 8 Bit Prüfsumme ? (9 answers)
Opened by wollik at 2011-06-24 17:33

murphy
 2011-06-24 20:08
#149942 #149942
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Ich denke, der Fehler ist, dass die Prüfsumme über die gesamten Eingabezeichenkette gebildet wird statt nur über den Teil zwischen dem "*" und dem folgenden " ". Folgendes zum Beispiel produziert wie gewünscht die Ausgabe 145:
Code (perl): (dl )
1
2
my $str = "*010 3 476.8 9.84 4691 240.4 16.48 3973 50 3937 ";
say unpack("%8C*", ($str =~ /\*([^ ]+) /)[0])


Es stellt sich mir allerdings auch noch die Frage, ob 145 wirklich das gewünschte Ergebnis ist. Es entspricht nämlich nicht der Spezifikation, welche da festlegt, dass eine Prüfsumme
Quote
[...] von „*“ einer Zeile bis einschließlich Leerzeichen [...]
gebildet werden soll. Demnach müsste man das Leerzeichen noch mit in der Prüfsumme verrechnen (in meinem Beispielcode könnte man dazu einfach die Klammer im regulären Ausdruck hinter das Leerzeichen verschieben) und das Ergebnis wäre im angegebenen Beispiel nicht mehr 145 sondern 177.
When C++ is your hammer, every problem looks like your thumb.

View full thread Wie generiert Ihr eine 8 Bit Prüfsumme ?