
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