方式一:使用$[]或$(())
格式为:$[base#number]或$((base#number)),其中base为进制,number为对应进制数。
这种方式输入2进制、16进制等,但只能输出为10进制,如下:
root@laptop ~ # echo $[2#1100]
12
root@laptop ~ # echo $((2#1100))
12
root@laptop ~ # echo $[16#ff]
255
root@laptop ~ # echo $[8#100]
64
方式二:使用bc命令
格式为:echo "obase=16 ; ibase=2 ; number" | bc ,其中obase代表输出进制,ibase代表输入进制,number表示ibase进制对应的数字
注意:为10时可不设置ibase obase的值,obase要尽量放在ibase前,因为ibase设置后,后面的数字都是以ibase的进制来换算的。同时16进制字母必须大写。
例如:
root@laptop ~ # echo "ibase=16;obase=2;FFEE" | bc
1111111111101110
root@laptop ~ # echo "ibase=8 ; obase=2 ; 67" | bc
110111
root@laptop ~ # echo "obase=16 ; base=2 ; 11001111" | bc
CF
root@laptop ~ # echo "obase=16;ibase=2;11001111 ; 0101100111001111" | bc
CF
59CF