在 Linux 命令行中对不同进制进行转换。
使用bc命令
十进制转任意进制
十进制转二进制
echo "obase=2; 192" | bc
输出结果为11000000
,
其中obase
是bc中特殊变量
,表示bc以几进制输出结果,在上例中,obase=2
,表示以二进制输出结果。
对应的还有一个特殊变量是ibase
,表示bc以几进制读取输入数值,默认情况下,obase和ibase的值是10,
表示以十进制进行读取和输出数值。上例中,没有设置ibase,所以默认以十进制读取数值。因此,在我们的例子中,
obase=2; 192
表示bc读取十进制的192并以二进制来输出结果。
十进制转四/八/十二/十六进制
echo "obase=4; 192" | bc
echo "obase=8; 192" | bc
echo "obase=12; 192" | bc
echo "obase=16; 192" | bc
二进制转十进制
echo "ibase=2; 11000000" | bc
输出结果为192
八进制转十进制
echo "ibase=8; 300" | bc
十六进制转十进制
echo "ibase=16; C0" | bc
二进制转十六进制
echo "ibase=2; obase=16; 11000000" | bc
其它的转换方法
bc命令可以在任意进制间进行转换,另外还有些命令可以进行固定进制的转换。
$(())
命令
可以将十六进制转换为十进制
$((0xC0))
printf
命令
可以将十进制转换为八进制/十六进制
printf "%x\n" 192
printf "%o\n" 192