使用 bc 从二进制转换为十六进制的困难

Abd*_*red 5 command-line bc

我阅读了如何使用命令行计算器和 HERE 文档进行计算,但是我没有得到我所期望的并且找不到我的错误,我在 shell 中所做的是:

bc << HERE
>ibase=2
>obase=16
>1001
>HERE
100
Run Code Online (Sandbox Code Playgroud)

由于二进制 1001 是十六进制 9,我希望得到 9,但我得到了 100。

Dig*_*uma 6

因为您是先设置输入基数,然后当您设置输出基数时,16 将根据输入基数(2)进行解释。在这种情况下,似乎6in16被简单地解释为二进制1位,因此输出基数被设置为二进制 11 或十进制 3。

要解决此问题,您可以在设置输入基数之前设置输出基数:

echo 'obase=16; ibase=2; 1001' | bc
Run Code Online (Sandbox Code Playgroud)


cuo*_*glm 4

因为您ibase=2首先设置,所以需要使用obase=10000

$ echo 'ibase=2; obase=10000; 1001' | bc
9
Run Code Online (Sandbox Code Playgroud)