私はbc
を使用して、数値を2進数から16進数、8進数から10進数などに変換しています。
次の例では、基数16(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
一度ibase=16
が完了しました。以降の入力番号は16進数です含む 10 in obase=10
これは10進数値16を表します。したがって、新しい入力ベース(現在は16進数)を使用して、前にobaseを設定するか、後に設定します。
$ echo 'obase=10; ibase=16; FF' | bc
255
$ echo 'ibase=16; obase=A; FF' | bc
255