我阅读了如何使用命令行计算器和 HERE 文档进行计算,但是我没有得到我所期望的并且找不到我的错误,我在 shell 中所做的是:
bc << HERE
>ibase=2
>obase=16
>1001
>HERE
100
Run Code Online (Sandbox Code Playgroud)
由于二进制 1001 是十六进制 9,我希望得到 9,但我得到了 100。
因为您是先设置输入基数,然后当您设置输出基数时,16 将根据输入基数(2)进行解释。在这种情况下,似乎6
in16
被简单地解释为二进制1
位,因此输出基数被设置为二进制 11 或十进制 3。
要解决此问题,您可以在设置输入基数之前设置输出基数:
echo 'obase=16; ibase=2; 1001' | bc
Run Code Online (Sandbox Code Playgroud)
因为您ibase=2
首先设置,所以需要使用obase=10000
:
$ echo 'ibase=2; obase=10000; 1001' | bc
9
Run Code Online (Sandbox Code Playgroud)