![bc: `ibase=16;okee=10;FF` が 255 ではなく FF を返すのはなぜですか? [コピー]](https://linux33.com/image/139126/bc%3A%20%60ibase%3D16%3Bokee%3D10%3BFF%60%20%E3%81%8C%20255%20%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%8F%20FF%20%E3%82%92%E8%BF%94%E3%81%99%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%3F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
bc
私は2進数を16進数に、8進数を10進数に変換する作業をしてきました。
次の例では、16進数(hex)を2進数、8進数、10進数に変換します。
最初の2回の試みには何の問題もありませんでした。
$ echo 'ibase=16; obase=2; FF' | bc
11111111
$ echo 'ibase=16; obase=8; FF' | bc
377
しかし、16進数(hex)数字を10進数(decimal)に変換しようとすると、間違った答えが出ます。答えは255
$ echo 'ibase=16; obase=10; FF' | bc
FF
答え1
完了したら、ibase=16
16進数で数値を追加してください。含む10 は 10obase=10
進値 16 を表します。したがって、obaseは新しい入力基準(現在の16進数)を使用する前または後に設定できます。
$ echo 'obase=10; ibase=16; FF' | bc
255
$ echo 'ibase=16; obase=A; FF' | bc
255