I stumbled over a curious bug, I think:
I tried to read \"512\" as a number to base 6, and output it as base 16:
echo \"ibase=6;obase=16;512\" | bc
161
See http://docstore.mik.ua/orelly/unix/upt/ch49_03.htm
When you set ibase
or obase
, it's expressed with the current base of ibase
. So set obase
before you set ibase
if you want to express obase
in decimal.
See also http://www.gnu.org/software/bc/manual/html_mono/bc.html#SEC9
Input numbers may contain the characters 0-9 and A-F. (Note: They must be capitals. Lower case letters are variable names.) Single digit numbers always have the value of the digit regardless of the value of ibase. (i.e. A = 10.) For multi-digit numbers, bc changes all input digits greater or equal to ibase to the value of ibase-1. This makes the number FFF always be the largest 3 digit number of the input base.
So for obase=16
in ibase=6
, the 6
becomes a 5
, and it is equivalent to an output base of decimal 6 * 1 + 1 * 5 == 11
, thus:
$ echo "obase=11;ibase=6;512" | bc
161