私は奇妙なバグに出くわしたと思います:
「512」を基数 6 の数値として読み取り、基数 16 として出力しようとしました。
echo "ibase=6;obase=16;512" | bc
161
ご覧のとおり、出力は 161 ですが、bc
(sic!) である必要があります。ベース10で試しました:
echo "ibase=6;obase=10;512" | bc
512
値は変更されません。奇妙!デフォルトの obase は 10 です。省略した場合:
echo "ibase=6;512" | bc
188
まあ、それは正しいようです。2 段階のプロセスで、次のように機能します。
echo "obase=16;"$(echo "ibase=6;512" | bc) | bc
BC
そこで、さまざまなベースのスクリプトを作成しましたが、戸惑い続けます。
for ib in {6,8,10,16}; do echo $ib; for ob in {10,16}; do echo -en $ib $ob" \t => " ; echo "ibase=$ib;obase=$ob;333" | bc ; done; done;
6
6 10 => 333
6 16 => 108
8
8 10 => 333
8 16 => 119
10
10 10 => 333
10 16 => 14D
16
16 10 => 333
16 16 => 01 15 05
バグレポートを提出する必要がありますか? そのような基本的なツールが壊れているとは本当に信じられません。