bc: `ibase=16; obase=10; FF` が 255 ではなく FF を返すのはなぜですか?

bc: `ibase=16; obase=10; FF` が 255 ではなく FF を返すのはなぜですか?

bc私は、2進数から16進数、8進数から10進数などの間で数値を変換するために使用してきました。

次の例では、16 進数を 2 進数、8 進数、10 進数に変換しようとしました。

最初の 2 回の試行では問題はありません。

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

しかし、16進数(16進数)を10進数(10進数)に変換しようとすると、間違った答えが出ました。答えは次のようになります。255

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

答え1

完了するとibase=16、以降の入力数値は16進数で表示されます。含む10 は 10obase=10進数値 16 を表します。したがって、新しい入力基数 (現在は 16 進数) を使用して、前または後のいずれかに obase を設定します。

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

関連情報