红联Linux门户
Linux帮助

shell数制转换

发布时间:2016-02-17 15:48:53来源:linux网站作者:CaspianSea

shell 脚本默认数值是由10 进制数处理,除非这个数字某种特殊的标记法或前缀开头. 才可以表示其它进制类型数值。如:以 0 开头就是 8 进制.以0x 开头就是16 进制数.使用 BASE#NUMBER 这种形式可以表示其它进制.BASE值:2-64.


使用方法:


八进制转十进制:
charles@taotao:~$ ((num=0123)) 
charles@taotao:~$ echo $num 
83 
charles@taotao:~$ ((8#123)) 
charles@taotao:~$ echo $((8#123)) 
83 


(( )) 也可以用 [ ]替代:

charles@taotao:~$ echo $[8#123] 
83 
charles@taotao:~$ echo $[0123] 
83 
charles@taotao:~$ echo $[num=0123] 
83 
charles@taotao:~$ echo $num 
83 


也可以用 let.

charles@taotao:~$ let num=0x80 
charles@taotao:~$ echo $num 
128 


十六进制转十进制:

charles@taotao:~$ ((num=0xff)) 
charles@taotao:~$ echo $num 
255 
charles@taotao:~$ ((num=16#ff)) 
charles@taotao:~$ echo $num 
255 


十进制转八进制:

charles@taotao:~$ echo "obase=16;255" | bc 
FF 
charles@taotao:~$ echo "obase=8;255" | bc 
377


本文永久更新地址:http://www.linuxdiyf.com/linux/18155.html