linux中进制转换

时间:2024-08-30 14:35:56

方式一:使用$[]或$(())

格式为:$[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