小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
本文已参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金。
数值的进制
Bash中数值默认都是十进制的。
如果想要使用不同的进制,可采用下面的表示形式:
number
:没有任何特殊表示法的数字是十进制数。0number
:数字0开头,表示八进制数。0xnumber
:数字0x开头,表示十六进制数。base#number
:base进制的数,通过base指定是几进制。由此,可以表示任意的进制。
比如下面几种进制:
$ let a=100
$ let b=0100
$ let c=0x100
$ let d=2#100
$ echo "a=$a,b=$b,c=$c,d=$d"
a=100,b=64,c=256,d=4
也可以使用
(())
获取进制值。
进制转换
其他进制转十进制
其他进制转十进制不需要特殊处理,获取值的,其表示形式就是10进制。
接上面的 a、b、c、d 变量。如下,查看其取值时为10进制:
$ let b10=b
$ let c10=c
$ let d10=d
$ echo $b10
64
$ echo $c10
256
$ echo $d10
4
十进制转其他进制
十进制转其他进制需要借助 bc 命令。指定 obase 为几进制。
如下,十进制分别转8、16、2进制。
$ echo "obase=8;$b10" | bc
100
$ echo "obase=16;$c10" | bc
100
$ echo "obase=2;$d10" | bc
100
其他进制间的转换
同样借助 bc 命令
$ echo "obase=2;$c10" | bc
100000000