Linux 下不同进制的数值转换

 

在 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