Ouch. Your bin2dec is doing absolutely nothing but making sure it's an integer.
You really need to think in terms of "numbers" being processed, not "decimal
numbers". The value 47 internally is not in decimal or binary, conceptually.
It's just forty seven things. So $a = 47 starts with a decimal 47 as
I type it in, then converts that to the concept of 47, and assigns that to $a.
So what we really have are building blocks:
$decimal = sprintf "%d", $num; # or trivially removed, since automatic
$octal = sprintf "%o", $num;
$hex = sprintf "%h", $num;
$binary = sprintf "%b", $num; # 5.6 only
$num = 0+ $decimal; # or trivially removed, since automatic
$num = oct($octal);
$num = unpack "N", pack "H*", $hex;
$num = unpack "N", pack "B*", $binary;
Then combine as needed.
-- Randal L. Schwartz, Perl hacker |