1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > bash 将二进制转换为十进制_shell中二进制 十进制 十六进制等进制转换

bash 将二进制转换为十进制_shell中二进制 十进制 十六进制等进制转换

时间:2020-03-15 09:34:10

相关推荐

bash 将二进制转换为十进制_shell中二进制 十进制 十六进制等进制转换

Shell脚本中数值都是默认按照十进制处理的,除非这个数值做了特殊标记,如:以 0 开头就是 8 进制数,以0x 开头就是16 进制数。

1. 二进制、八进制、十六进制等转化为十进制

另外 BASE#NUMBER 这种形式可以表示其它进制,BASE值:2 ~ 64。

Shell

((num=0xff)); echo $num

255

((num=0123)); echo $num

83

echo $((0123))

83

((num=8#123)); echo $num

83

((num=64#123)); echo $num

4227

1

2

3

4

5

6

7

8

9

10

((num=0xff));echo$num

255

((num=0123));echo$num

83

echo$((0123))

83

((num=8#123)); echo $num

83

((num=64#123)); echo $num

4227

2. 使用bc工具来进行进制转换

我的经验是:一般先设置obase,再设置ibase,这样的话obase/ibase都可以按照默认的十进制来设置;否则先设置的ibase会对后面设置的obase参数生效(这个要注意)。

ibase 设置 input base,必须是 2 ~ 16 之间的数字;对于十六进制,ABCDEF等字母要大写。

obase 设置 output base,2-16进制就用普通的表示方法,如果大于16,则用多个字符来表示一个数字,数字之间用空格间隔。

Shell

Jay-Ali:~ jay$ echo "obase=16; ibase=10; 100" | bc

64

Jay-Ali:~ jay$ echo "obase=2; ibase=10; 100" | bc

1100100

Jay-Ali:~ jay$ echo "obase=16; ibase=2; 111111" | bc

3F

Jay-Ali:~ jay$ echo "obase=5; ibase=10; 100" | bc

400

1

2

3

4

5

6

7

8

Jay-Ali:~jay$echo"obase=16; ibase=10; 100"|bc

64

Jay-Ali:~jay$echo"obase=2; ibase=10; 100"|bc

1100100

Jay-Ali:~jay$echo"obase=16; ibase=2; 111111"|bc

3F

Jay-Ali:~jay$echo"obase=5; ibase=10; 100"|bc

400

3. 使用printf来进行8、10、16进制的转化

printf也是可以用来进行简单的进制转换的;它不支持输出二进制。

Shell

Jay-Ali:~ jay$ printf %d 100

100

Jay-Ali:~ jay$ printf %o 100

144

Jay-Ali:~ jay$ printf %x 100

64

Jay-Ali:~ jay$ printf %d 0x64

100

Jay-Ali:~ jay$ printf %d 0144

100

Jay-Ali:~ jay$ printf %X 255

FF

1

2

3

4

5

6

7

8

9

10

11

12

Jay-Ali:~jay$printf%d100

100

Jay-Ali:~jay$printf%o100

144

Jay-Ali:~jay$printf%x100

64

Jay-Ali:~jay$printf%d0x64

100

Jay-Ali:~jay$printf%d0144

100

Jay-Ali:~jay$printf%X255

FF

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。