Dav*_*vid 13 algorithm binary perl decimal
我试图制作一个程序,将十进制数或文本转换为Perl中的二进制数.程序要求用户输入字符或字符串,然后将结果打印到控制台.我该怎么做呢?我一直在研究的代码如下,但我似乎无法修复它.
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;
}
Dav*_*d M 25
$decimal/2; 没有影响 $decimal
你可能想要$decimal /= 2;或者如果你想变得冷静的话$decimal >>= 1;
但实际上,你可能只想要:
printf "%b\n", $decimal;
小智 11
尝试使用十进制到二进制转换:
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 )'"