我发现了一个奇怪的错误:
我试图将“512”作为6进制数读取,并将其输出为16进制数:
echo "ibase=6;obase=16;512" | bc
161
如您所见,输出结果为161,但应该是bc
(错别字!)。我尝试使用十进制:
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
我应该提交一个错误报告吗,还是我错过了显而易见的事情?我真的不敢相信这样一个基本的工具是坏的。