hotti: unpack liefert falschen Wert :/

Beitrag lesen

hi,

endlich mal wieder bischen was in Perl ;)

Um zu prüfen ob ich überhaupt richtig auslese habe ich die 4 Byte mal in HEX mit folgender Funktion ausgeben lassen...

sub getHex {

my ($self, $data) = @_;
my $i;
my $return;

for ($i = 0; $i < length($data); $i++)
{
$return .= uc(unpack("H2",substr($data, $i, 1)));
if ($i + 1 < length($data))
{
$return .= " ";
}
}
return $return;
}

  
Das können wir schön viel kürzer machen, guck mal:  
~~~perl
  
my $bin = pack "I", 898544; # erzeuge 4 bytes  
printf "%02X %02X %02X %02X", unpack("CCCC", $bin);  
# F0 B5 0D 00  

2. Zeile Von r.n.l.:

  • Schablone "C" steht für Character, unpack "C" liefert den numerischen Wert eines Bytes in dezimal (CCCC für 4 bytes),
  • Format %02X macht aus der Dezimalzahl eine zweistellige Hexzahl mit großen Buchstaben.

Hotti