原文: http://www.cnblogs.com/chengmo/archive/2010/10/14/1851570.html

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

使用方法:

  • 其它进制转为10进制

八进制转十进制:

[chengmo@centos5 ~]$ ((num=0123));
[chengmo@centos5 ~]$ echo $num;
83

[chengmo@centos5 ~]$ ((num=8#123));
[chengmo@centos5 ~]$ echo $num;   
83

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

十六进制转十进制:

[chengmo@centos5 ~]$ ((num=0xff));
[chengmo@centos5 ~]$ echo $num;   
255
[chengmo@centos5 ~]$ ((num=16#ff));
[chengmo@centos5 ~]$ echo $num;   
255

base-32转十进制:

[chengmo@centos5 ~]$ ((num=32#ffff));
[chengmo@centos5 ~]$ echo $num;     
507375

base64转十进制:

[chengmo@centos5 ~]$ ((num=64#abc_));
[chengmo@centos5 ~]$ echo $num;      
2667327

二进制转十进制

[chengmo@centos5 ~]$ ((num=2#11111111)); 
[chengmo@centos5 ~]$ echo $num;
255

  • 十进制转为其它进制

十进制转八进制

这里使用到:bc外部命令完成。bc命令格式转换为:echo "obase=进制;值"|bc

[chengmo@centos5 ~]$ echo "obase=8;01234567"|bc
4553207

二进制,十六进制,base64转换为 十进制也相同方法。

[chengmo@centos5 ~]$ echo "obase=64;123456"|bc 
30 09 00

shell,内置各种进制表示方法非常简单。记得base#number 即可。这里记得赋值时候用(())符号。不能直接用=号了。=号没有值类型。默认将后面变成字符串了。如:

[chengmo@centos5 ~]$ num=0123;
[chengmo@centos5 ~]$ echo $num;
0123

0开头已经失去了意义了。

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

[chengmo@centos5 ~]$ let num=0123;
[chengmo@centos5 ~]$ echo $num;  
83

有其它更好方法,朋友们可以与我分享一下。

=================================

Shell编程:字符串与数值之间的转换与计算

================================

原文: http://blog.csdn.net/qianlong4526888/article/details/8516461

shell编程往往需要对字符串进行操作,有时需要将字符串转为数值,并做加减运算。以下介绍将字符串转为数值并进行计算的方法。

# temp1=400d7c

# echo $((16#${temp1}+4))    (打印默认是十进制输出的)

4197760

# temp2=$((16#${temp1}+4))

# echo "obase=16;${temp2}"|bc

400D80

以上内容是将字符串转为16进制后进行运算,然后再以16进制打印出来。

====================================华丽的总结线=====================================
shell中赋值、打印默认是10进制。除非你表明它是什么进制。将字符串转换成数字,其实就是使用运算符 (()),上面红色部分已经说明的很清楚了。(()) 与 let 有同样效果。
我给出的例子:

例1:不加(())的影响
[huntinux@huntinux 6chp]$ foo=0x400d
[huntinux@huntinux 6chp]$ echo $foo
0x400d
[huntinux@huntinux 6chp]$ ((foo=0x400d))
[huntinux@huntinux 6chp]$ echo $foo
16397

上面6行表示,如果没有使用(()),那么默认foo是字符串。但是加上(()),则认为它是数字,输出的时候默认是10进制。

例2:若忘记加(()),怎么办? --->补上一次(())
[huntinux@huntinux 6chp]$ foo=0x400d
[huntinux@huntinux 6chp]$ echo $foo
0x400d
[huntinux@huntinux 6chp]$ ((foo=$foo))
[huntinux@huntinux 6chp]$ echo $foo
16397

不过,好像$(()) 不过拘泥于这些细节。
[huntinux@huntinux 6chp]$ foo=0x400d
[huntinux@huntinux 6chp]$ echo $((foo+1))
16398
难道是先将foo替换成 0x400d?然后再进行计算?
即: $((foo+1)) --> $((0x400d+1))-->计算。
这里我给自己留下一个疑问。希望知情的网友指点。

Linux shell 不同进制数据转换(二进制,八进制,十六进制,base64)相关推荐

  1. python十六进制转换成八进制_Python 进制转换 二进制 八进制 十进制 十六进制

    全局定义一定不要丢了 全局定义 base = [str(x) for x in range()] + [ chr(x) for x in range(ord('A'),ord('A')+)] 二进制 ...

  2. linux shell 10进制转16进制

    10进制转16进制:15 > 0xf printf '%x\n' 15 16进制转10进制:0xf > 15 printf '%d\n' 0xF echo $((16#f)) 16进制转8 ...

  3. Linux shell中进制转换

    1.各种进制转换为十进制 为变量赋值: ((var=base#number)) 显示变量: echo $var 例: ((i=16#fff)) echo $i 4095 ((i=32#abc))ech ...

  4. 计算机底层入门 02 进制运算二进制和十六进制

    1.4 进制运算 八进制计算下面的结果 2 + 3 = 5 2 * 3 = 6 4 + 5 = 11 4 * 5 = 24 运算的本质就是查数 0 1 2 3 4 5 6 7 用十进制来辅助运算,然后 ...

  5. C# 进制转换(二进制、十六进制、十进制互转) .

    C# 进制转换(二进制.十六进制.十进制互转) 由于二进制数在C#中无法直接表示,所以所有二进制数都用一个字符串来表示 例如: 二进制: 1010 表示为 字符串:"1010"  ...

  6. linux进程号转换成16进制,Shell脚本中不同进制数据转换的例子(二进制、八进制、十六进制、base64)...

    shell可以在不调用第3方命令,表示不同进制数据.这里总结以下表示方法.shell 脚本默认数值是由10 进制数处理,除非这个数字某种特殊的标记法或前缀开头. 才可以表示其它进制类型数值.如:以 0 ...

  7. 计算机基础知识 —— 进制(二进制、八进制、十进制、十六进制)

    这是一个目录导航 点击 此链接 去学习 更多必须掌握的基础知识! 1.关于进制: 对于进制,我们都很熟悉,从小学开始就知道 1.2-9.10.11- 这就是十进制. 几进制就是逢几进1. 为什么全世界 ...

  8. 进制转换二进制转八进制_将二进制数制转换为八进制数制

    进制转换二进制转八进制 Prerequisite: Number systems 先决条件: 数字系统 To convert binary numbers into octal numbers, we ...

  9. python 二进制转八进制_Python-八进制、二进制互转

    Python-八进制转二进制 input_str = input('请输入待转八进制数:') list_num = [] list_octal = [] lists = [] t = 0 def oc ...

最新文章

  1. 堆栈,静态变量和普通变量,静态函数和普通函数的区别
  2. Python安装MySQL模块
  3. noip2006总结
  4. python 3.3.3 字面量,正则,反斜杠和原始字符串
  5. web 折线图大数据量拉取展示方案_对比多种微前端方案
  6. 深入浅出Flume之原理解析
  7. 2022前端面试笔试题及答案
  8. visio2007序列号
  9. 关于图片或者文件在数据库的存储方式归纳
  10. AXIS的Calculater 测试
  11. 【Love2d从青铜到王者】第十一篇:Love2d之图像(Images)
  12. 时间紧、任务重、资源有限,项目经理如何来保证研发效率?
  13. CentOS ping本机ip,能ping通,外网ping不通
  14. 电商数据分析指标体系
  15. 欧拉函数(求与n互质的数的个数)
  16. 26、用户 创建用户
  17. tranmac不能识别_怎么用transmac制作mac安装盘|transmac制作苹果系统启动U盘方法
  18. 百度收录 百度收录有什么好方法吗
  19. 自学python推荐廖雪峰网站
  20. iOS判断运营商类型

热门文章

  1. uva 12086 - Potentiometers(树状数组)
  2. P3817 小A的糖果
  3. 【C++OJ_静态与友元】电视机与遥控器(友元类)
  4. 百度索引量是什么意思?及如何提高索引量?
  5. 2022年自考专业考试(英语)语言与文化练习题
  6. P1058 [NOIP2008 普及组] 立体图
  7. 【正则表达式 】java 正则表达式 校验日期格式
  8. linux ps命令缺点,Linux pkill和killall命令的缺陷
  9. WIN10下Allegro卡死的问题解决
  10. leetcode:427. 建立四叉树【经典建树】