Perlで10進数やテキストを2進数に変換するプログラムを作ろうとしています。プログラムは、文字または文字列のユーザー入力を要求し、その結果をコンソールに出力します。どうすればよいですか?私が取り組んできたコードは以下のとおりですが、修正できないようです。
print "Enter a number to convert: ";
chomp($decimal = <STDIN>);
print "\nConverting $number to binary...\n";
$remainder = $decimal%2;
while($decimal > 0)
{
$decimal/2;
print $remainder;
}
$decimal/2;
は$decimal
に影響を与えていません
おそらく$decimal /= 2;
が必要です。または、クールになりたい場合は、$decimal >>= 1;
が必要です。
しかし、本当に、本当に、あなたはおそらくただ欲しいだけです:
printf "%b\n", $decimal;
10進数から2進数への変換には、これを試してください。
my $bin = sprintf ("%b", $dec);
各ビットを取得するには:
my @bits = split(//, $bin);
次に、各ビットを操作したり、MSBインデックスを変更したりできます。
コマンドラインですばやく変換するために、。bash_profileに次のエイリアスがあります。
# from-decimal
alias d2h="Perl -e 'printf qq|%X\n|, int( shift )'"
alias d2o="Perl -e 'printf qq|%o\n|, int( shift )'"
alias d2b="Perl -e 'printf qq|%b\n|, int( shift )'"
# from-hex
alias h2d="Perl -e 'printf qq|%d\n|, hex( shift )'"
alias h2o="Perl -e 'printf qq|%o\n|, hex( shift )'"
alias h2b="Perl -e 'printf qq|%b\n|, hex( shift )'"
# from-octal
alias o2h="Perl -e 'printf qq|%X\n|, oct( shift )'"
alias o2d="Perl -e 'printf qq|%d\n|, oct( shift )'"
alias o2b="Perl -e 'printf qq|%b\n|, oct( shift )'"
# from-binary
alias b2h="Perl -e 'printf qq|%X\n|, oct( q|0b| . shift )'"
alias b2d="Perl -e 'printf qq|%d\n|, oct( q|0b| . shift )'"
alias b2o="Perl -e 'printf qq|%o\n|, oct( q|0b| . shift )'"
perlfaq4 ( 数値表現/基数/基数間で変換するにはどうすればよいですか? )にリストされている10進数から2進数に変換する方法がいくつかあります。
sprintf は良い選択です。
alias b2d="Perl -e 'printf qq|%d\n|, unpack("N", pack("B32", substr("0" x 32 . 1101 , -32)))'"
alias b2h="Perl -e 'printf qq|%X\n|, unpack("N", pack("B32", substr("0" x 32 . 1101 , -32)))'"
alias b2o="Perl -e 'printf qq|%o\n|, unpack("N", pack("B32", substr("0" x 32 . 1101 , -32)))'"
#!/usr/bin/Perl
use strict;
print "Enter a number to convert: ";
chomp(my $decimal = <STDIN>);
print "\nConverting $decimal to binary...\n";
my @array;
my $num;
while($decimal >= 1)
{
if($decimal == 1) {
$num .= 1;
last;
}
my $remainder = $decimal%2;
$num .= $remainder;
$decimal = $decimal/2;
}
print $num."\n";
私はこのコードを使用して10進数を2進数に変換しました。
print "Enter a number to convert: ";
chomp($decimal = <STDIN>);
print "\nConverting $number to binary...\n";
$ans=0;$i=1;
while($decimal > 0)
{
$remainder = $decimal%2;
$ans=$ans+$remainder*$i;
$i=$i*10;
$decimal >>= 1
}
print $ans