shell 编程进制转换

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

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

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

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

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

  • 十进制转换为其他进制

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

八进制转十进制:

:/home/baohua# echo $((num = 0123))
83

:/home/baohua# echo $((num = 8#123))
83

十六进制转十进制: 

:/home/baohua# echo $((num=0xff))
255

:/home/baohua# echo $((num=16#ff))
255

二进制转十进制

:/home/baohua# echo $((num=2#11111111))
255

base-32转十进制:

:/home/baohua# echo $((num=32#ffff))
507375

base64转十进制:

:/home/baohua# echo $((num=64#ffff))
3994575

  • 其他进制转换为十进制
十进制转八进制bc外部命令完成。bc命令格式转换为:echo "obase=进制;值"|bc. 二进制,十六进制,base64转换为 十进制也相同方法.
:/home/baohua# echo "obase=8;0123"|bc173
:/home/baohua# echo "obase=2;0123"|bc1111011
 

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

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

相关推荐