Wie kann ich eine 8 Bit Checksumme erzeugen ?

Hallo ins Forum,
ich habe folgende Frage an Euch:
Für einen ASCII-String, muss ich eine Checksumme nach folgender Vorgabe erzeugen:
"Für die Prüfsumme werden die ASCII-Werte der Zeichen von „*“ einer Zeile bis einschließlich Leerzeichen nach dem Ertrag aufaddiert und als ASCII-Wert mit ausgegeben. Zur Berechnung der Prüfsumme wird für Addition und Anzeige nur 1 Byte verwendet und somit die Überläufe mit verwendet."
Hier mein bisheriger Code:
#!perl
$| = 1;
use strict;
### Der String: "*010 3 476.8 9.84 4691 240.4 16.48 3973 50 3937 " ### soll: "æ" erzeuen
my $asc_string = "*010 3 476.8 9.84 4691 240.4 16.48 3973 50 3937 ";
my @asc_array = split (//, $asc_string);
my $checksum = unpack("%8C*", $asc_string);
my $ascii_val = chr($checksum);
print "\nFolgender ASCII String hat $#asc_array Zeichen.\n\n";
print "--->$asc_string<---\n\n";
print "Errechnete Checksumme: ->$checksum<- \tASCII Wert: ->$ascii_val<-\n";
$checksum = "145";
$ascii_val = chr($checksum);
print "Geforderte Checksumme: ->$checksum<- \tASCII Wert: ->$ascii_val<-\n\n";
--- und erzeugt diesen Output:
Folgender ASCII String hat 55 Zeichen.
--->*010 3 476.8 9.84 4691 240.4 16.48 3973 50 3937 <---
Errechnete Checksumme: ->230<- ASCII Wert: ->µ<-
Geforderte Checksumme: ->145<- ASCII Wert: ->æ<-
--- Hat jemand eine Idee warum ich 230 anstelle von 145 errechne ?
Viele Dank für Eure Unterstützung
WolliK
Trackback URL für diesen Beitrag:
- Anmelden oder Registrieren um Kommentare zu schreiben
- 803 Aufrufe
-

crosspost
Crosspost: http://www.perl-community.de/bat/poard/thread/16455
perl-community.de - das forum mit wiki, scripts und grosser FAQ