linux中進位制轉換
方式一:使用$[]或$(())
格式為:$[base#number]或$((base#number)),其中base為進位制,number為對應進位制數。
這種方式輸入2進位制、16進位制等,但只能輸出為10進位制,如下:
[email protected] ~ # echo $[2#1100]
12
[email protected] ~ # echo $((2#1100))
12
[email protected] ~ # echo $[16#ff]
255
[email protected] ~ # echo $[8#100]
64
方式二:使用bc命令
格式為:echo "obase=16 ; ibase=2 ; number" | bc ,其中obase代表輸出進位制,ibase代表輸入進位制,number表示ibase進位制對應的數字
注意:為10時可不設定ibase obase的值,obase要儘量放在ibase前,因為ibase設定後,後面的數字都是以ibase的進位制來換算的。同時16進位制字母必須大寫。
例如:
[email protected] ~ # echo "ibase=16;obase=2;FFEE" | bc
1111111111101110
[email protected] ~ # echo "ibase=8 ; obase=2 ; 67" | bc
110111
[email protected] ~ # echo "obase=16 ; base=2 ; 11001111" | bc
CF
[email protected] ~ # echo "obase=16;ibase=2;11001111 ; 0101100111001111" | bc
CF
59CF