Leser: 2
![]() |
|< 1 2 >| | ![]() |
12 Einträge, 2 Seiten |
1
2
3
4
5
6
7
8
#in $ndata steht '35312c38'
$ndataxor = 0;
@array = split(//, $ndata);
foreach (@array)
{ print $ndataxor . " xor ". $_;
$ndataxor = $ndataxor^$_;
print " -> ". $ndataxor . "\n";
}
QuoteArgument "c" isn't numeric in bitwise xor (^)
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";
}
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;
}
QuoteDurch dein split erzeugst du keine Hexzahlen sondern ASCII-Zeichen.
perl -e 'print "CAPSAWAY" ^ " "'
perl -MDevel::Peek -e 'Dump "abc43"+0'
perl -MDevel::Peek -e 'Dump "43abc"+0'
Quotewerds mir für die zukunft merken, das mit use warnings.
FoolAck+2009-02-16 14:49:25--QuoteDurch dein split erzeugst du keine Hexzahlen sondern ASCII-Zeichen.
Genauer gesagt nul-terminierte Char-Arrays.
[...]
QuotePerls Strings sind nicht nullterminiert, sondern haben eine Laengeninformation (was im uebrigen die wesentlich sinnvollere Speicherstruktur ist). Man kann in Perl ohne weiteres Nullzeichen in der Mitte eines Strings einbauen.
QuoteQuoteDurch dein split erzeugst du keine Hexzahlen sondern ASCII-Zeichen.
Genauer gesagt nul-terminierte Char-Arrays.
perldoc Devel::Peek|less -p'\\0'
QuoteThe \0 at the end indicate that this PV is properly NUL-terminated.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
perl -MDevel::Peek -e 'Dump [ split //, q{35312c38} ]'
SV = RV(0x817feb0) at 0x815399c
REFCNT = 1
FLAGS = (TEMP,ROK)
RV = 0x8153678
SV = PVAV(0x8157c64) at 0x8153678
REFCNT = 2
FLAGS = ()
IV = 0
NV = 0
ARRAY = 0x8175830
FILL = 7
MAX = 7
ARYLEN = 0x0
FLAGS = (REAL)
Elt No. 0
SV = PV(0x8153cb0) at 0x8152ce8
REFCNT = 1
FLAGS = (POK,pPOK)
PV = 0x816ea58 "3"\0
CUR = 1
LEN = 4
Elt No. 1
SV = PV(0x8153c74) at 0x8153660
REFCNT = 1
FLAGS = (POK,pPOK)
PV = 0x816bd08 "5"\0
CUR = 1
LEN = 4
Elt No. 2
SV = PV(0x8153c8c) at 0x815366c
REFCNT = 1
FLAGS = (POK,pPOK)
PV = 0x8174d50 "3"\0
CUR = 1
LEN = 4
Elt No. 3
SV = PV(0x8153d04) at 0x817d7dc
REFCNT = 1
FLAGS = (POK,pPOK)
PV = 0x815b140 "1"\0
CUR = 1
LEN = 4
![]() |
|< 1 2 >| | ![]() |
12 Einträge, 2 Seiten |