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進数変換
・漢数字変換
・英語の数字変換