2進10進数変換
sprintfやoctを使います。
use strict; use warnings; # 10進数から2進数 my $bin = sprintf "%b", 1000; print $bin, "\n"; # 1111101000 # 2進数から10進数 my $dec = oct "0b" . $bin; print $dec, "\n"; # 1000自分で作る場合は、以下のようにして作ることができます。
use strict;
use warnings;
# 10進数から2進数
my $bin = dec2bin(1000);
print $bin, "\n"; # 1111101000
# 2進数から10進数
my $dec = bin2dec($bin);
print $dec, "\n"; # 1000
# 2進数に変換する(引数は10進数の正の整数)
sub dec2bin {
my $val = shift;
my $ret = '';
my $i;
return 0 if ($val == 0);
while ($val > 0) {
$i = $val % 2;
$ret = "$i$ret";
$val = int($val / 2);
}
return $ret;
}
# 10進数に変換する(引数は2進数の正の整数)
sub bin2dec {
my $val = shift;
my $ret = 0;
my $i = 1;
foreach my $num (reverse split //, $val) {
if ($num == 1) {
$ret = $ret + $i;
}
$i = $i * 2;
}
return $ret;
}
関連項目
・10進16進数変換・n進数変換
・漢数字変換
・英語の数字変換
