shell 编程进制转换

Posted rykang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

 

 

 

以上是关于shell 编程进制转换的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp C片段将十进制转换为二进制

shell编程

Shell编程入门

c语言编程题,数制转换

Linux高手请进,急急急!Linux脚本,与二进制程序的异同

Linux shell 编程:运算