web-dev-qa-db-ja.com

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

私は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
23
Sabrina

一度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
64
A.B