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