我偶然发现了一个奇怪的错误,我想:
我尝试将“512”读取为基数 6 的数字,并将其输出为基数 16:
echo "ibase=6;obase=16;512" | bc
161
正如你所看到的,输出是161,但它应该是bc
(原文如此!)。我尝试使用基数 10:
echo "ibase=6;obase=10;512" | bc
512
该值不变。好奇的!默认 obase 是 10。如果我省略它:
echo "ibase=6;512" | bc
188
嗯,看来是对的。在两步过程中,它的工作原理是:
echo "obase=16;"$(echo "ibase=6;512" | bc) | bc
BC
所以我为不同的基础制作了一个脚本,但这让我感到困惑:
for ib in {6,8,10,16}; do echo $ib; for ob in {10,16}; do echo -en $ib $ob" \t => " ; echo "ibase=$ib;obase=$ob;333" | bc ; done; done;
6
6 10 => 333
6 16 => 108
8
8 10 => 333
8 16 => 119
10
10 10 => 333
10 16 => 14D
16
16 10 => 333
16 16 => 01 15 05
我应该提交错误报告,还是我会错过显而易见的事情?我真的不敢相信这样一个基本的工具被破坏了。