10進・16進・2進変換

back
Perl5.6 以上かそうじゃないかで使えるものが違うので注意

■ 1. 10進 -> 16進
$a = 30;
$b = sprintf("%X", $a);
print "$b\n";                -> 1E
(5.005もOK)

■ 2. 10進 -> 2進
$a = 5;
$b = sprintf("%b", $a);
print "$b\n";                -> 101

5.005は
$a = 5;
$b = unpack("B8", pack("C", $a));
print "$b\n";                -> 00000101

■ 3. 16進 -> 10進
$a = "0x11";
$b = oct $a;
print $b;                    -> 17
($a が "0x" で始まっていること)
(5.005 も OK)

■ 4. 2進 -> 10進
$a = "0b11";
$b = oct $a;
print $b;                    -> 3
($a が "0b" で始まっていること)

5.005 は
$a = "00000011";
$b = unpack("C", pack("B8", $a));
print "$b\n";


なお、3(16 -> 10)は
$a = 12;
$b = hex $a;
print $b;                    -> 18
と、専用の hex 関数がある

また、oct 関数は
$a = 12;
$b = oct $a;
print $b;                    -> 10
標準では 8進 -> 10進変換を行う。

どちらも 5.005_03 OK

back