我偶然发现了一个奇怪的错误,我认为:
我尝试将“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
我应该提交错误报告,还是我错过了明显的?我真的不敢相信这样一个基本的工具被打破了。