Verwandlung mit Perl
Ein Problem, welches in der Informatik immer wieder auftritt
ist das Umwandeln von Zahlen in unterschiedliche
numerische Repräsentationen.
Hier kann Perl helfen. Wie immer gibt es aber mehr als einen Weg,
um das Problem zu lösen:
Mit dem in Perl eingebauten "0x"-Mechanismus:
$int = 0xCAFE;
$dec = sprintf("%d", $int);
$dec = 0xCAFE;
Unter Verwendung der hex-Funktion:
$int = hex("CAFE");
$dec = sprintf("%d", $int);
$dec = hex("CAFE");
Mit "pack":
$int = unpack("N",pack("H8",substr("0" x 8 . "CAFE",-8)));
$dec = sprintf("%d", $int);
$dec = unpack("N",pack("H8", substr("0" x 8 . "CAFE",-8)));
Mit "sprintf":
$hex = sprintf("%X", 3735928559);
$hex = sprintf("%X", 3735928559);
$hex = sprintf("%x", 3735928559);
$bin = sprintf("%b", 3735928559);
$oct = sprintf("%o", 3735928559);
Mit "unpack":
$hex = unpack("H*", pack("N", 3735928559));
Mit der eingebauten Konvertierung von Zahlen mit führenden Nullen:
$int = 033653337357;
$dec = sprintf("%d", $int);
$dec = 033653337357;
Mit der oct-Function:
$int = oct("33653337357");
$dec = sprintf("%d", $int);
$dec = oct("33653337357");
Mit "ord" und "pack":
my $input = "10110110";
$decimal = ord( "0b$input" );
$decimal = ord(pack('B8', '10110110'));
Mit "pack" und "unpack" für lange Zeichenketten
$int = unpack("N", pack("B32",
substr("0" x 32."11110101011011011111011101111",-32)));
