shell 编程进制转换

shell脚本在处理数据的时候,默认是10进制,通过特殊的标记或者前缀可以转换为其他的进制。

以 0 开头就是 8 进制.以0x 开头就是16 进制数.

1. 使用 BASE#NUMBER 这种形式可以表示其它进制.BASE值的取值范围:2-64.

2. 赋值时候用(())符号。不能直接用=号了。=号没有值类型。默认将后面变成字符串了.

3. 可以通过定义符:let达到(()) 运算效果.

 

  • 十进制转换为其他进制

((表达式)),(())里面可以是任意数据表达式。如果前面加入:”$”可以读取计算结果。

八进制转十进制:

root@baohua-VirtualBox:/home/baohua# echo $((num = 0123))
83


root@baohua-VirtualBox:/home/baohua# echo $((num = 8#123))
83

 

十六进制转十进制: 

root@baohua-VirtualBox:/home/baohua# echo $((num=0xff))
255

root@baohua-VirtualBox:/home/baohua# echo $((num=16#ff))
255

 

二进制转十进制

root@baohua-VirtualBox:/home/baohua# echo $((num=2#11111111))
255

 

base-32转十进制:

root@baohua-VirtualBox:/home/baohua# echo $((num=32#ffff))
507375

 

base64转十进制:

root@baohua-VirtualBox:/home/baohua# echo $((num=64#ffff))
3994575


 

 

  • 其他进制转换为十进制
十进制转八进制

bc外部命令完成。bc命令格式转换为:echo "obase=进制;值"|bc. 二进制,十六进制,base64转换为 十进制也相同方法.

root@baohua-VirtualBox:/home/baohua# echo "obase=8;0123"|bc
173

root@baohua-VirtualBox:/home/baohua# echo "obase=2;0123"|bc
1111011

 

 

在赋值运算中,不能再用=号,需要(())来进行赋值才可以达到进制转换,另外也可以通过定义符:let达到(()) 运算效果.

root@baohua-VirtualBox:/home/baohua# let num=0123;
root@baohua-VirtualBox:/home/baohua# echo $num
83

 

 

 

 

posted @ 2019-11-18 11:10  ryankang  阅读(1340)  评论(0编辑  收藏  举报