use integer; my @uha = qw(1 2 3 4 2 4 6 0 12); # Uint8 Array say normalChecksum(@uha, scalar @uha); # 33 say simpleChecksum(@uha); # 33 # von c nach Perl sub normalChecksum{ my $n = pop @_; my ($i,$a,$bb); for($i = 1, $a = 0; $i < $n; $i++){ $a += $_[$i]; } $bb = $a / 255; $a = ($a - 256 * $bb) + $bb; $bb = $a / 256; return ($a-256*$bb) + $bb; } # Vereinfachung mit pack sub simpleChecksum{ my @uha = @_; return unpack("%C*", pack "C*", @uha) - 1; }