一、进制转换
bc 的特殊变量 ibase 和 obase 分别包含用于输入和输出的进制的值。缺省情况下,都被设置为 10。要执行进制转换,需要改变其中的一个或两个值,然后提供一个数字,回车后即会按指定的进制显示转换结果:
# bc
10*10
100
obase=10
10
10
obase=16
10
A --> 将数字10转换为16进制,显示为A
ibase=2
10
2 --> 2进制的10,在16进制中显示为2
1010
A
quit
要快速执行进制转换,可以结合使用 bc 和 echo形成快捷的单命令行程序,将给定的值通过管道传输给 bc。
# echo 'obase=16; 47'|bc
2F
# echo 'obase=10; ibase=16; AF3' |bc
2803
注意:当您设置 bc 的输入进制以后,输入 bc 的所有数字都使用该进制,包括您提供用于设置输出进制的数字。因此最好先设置输出进制,否则可能会产生意想不到的结果,
# bc
ibase=16;obase=10 --> 输入进制是16,所以obase=10中的“10”表示输出进制也为“16进制”
A
A --> 故转换结果仍为16进制的10,显示A
obase=A --> obase=A 表示输出进制为“10进制”
A
10
quit
我们会发现,在上面的例子里,如果先指定输出进制,后指定输入进制,结果就和我们预想的一样了:
# bc
obase=10;ibase=16
A
10