Bc

bc: 為什麼 ibase=16;肥胖=10;FF返回FF而不是255?

  • August 26, 2018

我一直在使用bc二進製到十六進制、八進製到十進制等之間的數字轉換。

在以下範例中,我嘗試將 16 進制(十六進制)數字轉換為二進制、八進制和十進制。

我對前 2 次嘗試沒有任何問題。

$ echo 'ibase=16; obase=2; FF' | bc  
11111111
$ echo 'ibase=16; obase=8; FF' | bc 
377

但是當我嘗試將基數 16(十六進制)數字轉換為基數 10(十進制)時,我得到了錯誤的答案。答案應該是255

$ echo 'ibase=16; obase=10; FF' | bc 
FF

完成ibase=16後,進一步的輸入數字為十六進制,包括10,obase=10其中表示十進制值 16。因此,要麼在之前設置 obase,要麼在之後設置,使用新的輸入基數(現在是十六進制):

$ echo 'obase=10; ibase=16; FF' | bc
255
$ echo 'ibase=16; obase=A; FF' | bc
255

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