Thread XOR Checksum von HEX-Werten (11 answers)
Opened by rbach at 2009-02-16 14:19

FoolAck
 2009-02-16 14:59
#118896 #118896
User since
2008-05-02
69 Artikel
BenutzerIn
[default_avatar]
Benutze bitte "use strict" und "use warnings". Die Warnung die du bekommen hättest, hätte dir bereits geholfen:
Quote
Argument "c" isn't numeric in bitwise xor (^)

Da du erwartest, dass '6^c==a' ist, gehe ich davon aus, dass du "c" als 12 und "a" als 10 interpretierst. Das sind für perl aber keine hex-Zahlen, sondern Strings, mit numerischem Wert von 0.
Willst du strings als hex interpretieren, nimmst du die Funktion hex:
Code: (dl )
1
2
3
4
5
6
7
8
9
use strict;
use warnings;
my $ndata = '35312c38';
my $ndataxor = 0;
for my $num (map { hex($_) } split //, $ndata) {
print "$ndataxor xor $num -> ";
$ndataxor ^= $num;
print "$ndataxor\n";
}


edit:
oder als hex angezeigt:
Code: (dl )
1
2
3
4
5
6
7
8
use strict;
use warnings;
my $ndata = '35312c38';
my $ndataxor = 0;
for my $num (map { hex } split //, $ndata) {
printf "%x xor %x -> %x\n", $ndataxor, $num, $ndataxor ^ $num;
$ndataxor ^= $num;
}

View full thread XOR Checksum von HEX-Werten