Command-Line

使用 bc 從二進制轉換為十六進制的困難

  • March 2, 2018

我閱讀瞭如何使用命令行計算器和 HERE 文件進行計算,但是我沒有得到我期望的結果,也找不到我的錯誤,我在 shell 中所做的是:

bc << HERE
>ibase=2
>obase=16
>1001
>HERE
100

我希望得到 9 作為結果,因為二進制 1001 是十六進制 9,但我得到了 100。

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

$ echo 'ibase=2; obase=10000; 1001' | bc
9

因為您是先設置輸入基數,然後當您設置輸出基數時,16 將根據輸入基數 (2) 進行解釋。在這種情況下,似乎6in16被簡單地解釋為二進制1位,因此輸出基數設置為二進制 11 或十進制 3。

要解決此問題,您可以在設置輸入基數之前設置輸出基數:

echo 'obase=16; ibase=2; 1001' | bc

引用自:https://unix.stackexchange.com/questions/192478