使用 bc 进行进制转换

​Shell​​​ 中进行进制转换的另一个诀窍是使用 ​​bc​​​,它是一种任意精度运算语言,大多数 UNIX/​​Linux​​ 安装程序都提供。因为它允许您指定输出进制,所以当您需要以十进制以外的进制输出时,这是一种很好的技术。

​bc​​​ 的特殊变量 ​​ibase​​​ 和 ​​obase​​​ 分别包含用于输入和输出的进制的值。缺省情况下,都被设置为 10。要执行进制转换,需要改变其中的一个或两个值,然后提供一个数字。立即尝试,如清单 8 中所示。
清单 8. 使用 bc 执行进制转换

$ bc -ql

10

10

obase=16

10

A

ibase=2

10

2

​bc​​​ 和 ​​echo​​​形成快捷的单命令行程序,将给定的值通过管道传输给 ​​bc​​​。键入清单 9 中显示的内容。
清单 9. Shell 单命令行 bc 程序

$ echo 'obase=16; 47' | bc 2F

$ echo 'obase=10; ibase=16; A03' | bc 2563

警告:当您设置 ​​bc​​​ 的输入进制以后,输入 ​​bc​​​ 的所有数字都使用该进制,包括您提供用于设置输出进制的数字。因此最好先设置输出进制,否则可能会产生意想不到的结果,如清单 10 中所示。
清单 10. 设置输入和输出进制的先后顺序的重要性


$ echo 'ibase=16; obase=10; A' | bc A

$ echo 'ibase=16; obase=A; A' | bc 10