1. 程式人生 > >linux中進位制轉換

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