Я наткнулся на любопытную ошибку, я думаю:
Я попытался прочитать «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
Ну, это кажется правильным. Это работает в два этапа:
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
Должен ли я подать отчет об ошибке или я пропущу очевидное? Я не могу поверить, что такой основной инструмент сломан.