Skip to content

Instantly share code, notes, and snippets.

@iguoli
Last active June 26, 2017 05:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iguoli/6a6aa4bd8591b513ccaa8efe5e878e35 to your computer and use it in GitHub Desktop.
Save iguoli/6a6aa4bd8591b513ccaa8efe5e878e35 to your computer and use it in GitHub Desktop.
Linux下不同进制的数值转换

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=8; 192" | bc

十进制转十六进制

echo "obase=16; 192" | bc

十进制转任意进制

十进制转四进制

echo "obase=4; 192" | bc

十进制转十二进制

echo "obase=12; 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment