Shell脚本中数值都是默认按照十进制处理的,除非这个数值做了特殊标记,如:以 0 开头就是 8 进制数,以0x 开头就是16 进制数。

1. 二进制、八进制、十六进制等转化为十进制

另外 BASE#NUMBER 这种形式可以表示其它进制,BASE值:2 ~ 64。

Shell

((num=0xff)); echo $num

255

((num=0123)); echo $num

83

echo $((0123))

83

((num=8#123)); echo $num

83

((num=64#123)); echo $num

4227

1

2

3

4

5

6

7

8

9

10

((num=0xff));echo$num

255

((num=0123));echo$num

83

echo$((0123))

83

((num=8#123)); echo $num

83

((num=64#123)); echo $num

4227

2. 使用bc工具来进行进制转换

我的经验是:一般先设置obase,再设置ibase,这样的话obase/ibase都可以按照默认的十进制来设置;否则先设置的ibase会对后面设置的obase参数生效(这个要注意)。

ibase 设置 input base,必须是 2 ~ 16 之间的数字;对于十六进制,ABCDEF等字母要大写。

obase 设置 output base,2-16进制就用普通的表示方法,如果大于16,则用多个字符来表示一个数字,数字之间用空格间隔。

Shell

Jay-Ali:~ jay$ echo "obase=16; ibase=10; 100" | bc

64

Jay-Ali:~ jay$ echo "obase=2; ibase=10; 100" | bc

1100100

Jay-Ali:~ jay$ echo "obase=16; ibase=2; 111111" | bc

3F

Jay-Ali:~ jay$ echo "obase=5; ibase=10; 100" | bc

400

1

2

3

4

5

6

7

8

Jay-Ali:~jay$echo"obase=16; ibase=10; 100"|bc

64

Jay-Ali:~jay$echo"obase=2; ibase=10; 100"|bc

1100100

Jay-Ali:~jay$echo"obase=16; ibase=2; 111111"|bc

3F

Jay-Ali:~jay$echo"obase=5; ibase=10; 100"|bc

400

3. 使用printf来进行8、10、16进制的转化

printf也是可以用来进行简单的进制转换的;它不支持输出二进制。

Shell

Jay-Ali:~ jay$ printf %d 100

100

Jay-Ali:~ jay$ printf %o 100

144

Jay-Ali:~ jay$ printf %x 100

64

Jay-Ali:~ jay$ printf %d 0x64

100

Jay-Ali:~ jay$ printf %d 0144

100

Jay-Ali:~ jay$ printf %X 255

FF

1

2

3

4

5

6

7

8

9

10

11

12

Jay-Ali:~jay$printf%d100

100

Jay-Ali:~jay$printf%o100

144

Jay-Ali:~jay$printf%x100

64

Jay-Ali:~jay$printf%d0x64

100

Jay-Ali:~jay$printf%d0144

100

Jay-Ali:~jay$printf%X255

FF

bash 将二进制转换为十进制_shell中二进制、十进制、十六进制等进制转换相关推荐

  1. python十进制转八进制_Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)...

    使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x) Convert an integer num ...

  2. 二进制 八进制 十进制 十六进制 之间进制转换(图解篇)

    一.本文所涉及的内容(Contents)                      目录 一.本文所涉及的内容(Contents) 二.背景(Contexts) 三.进制转换算法(Convert) ( ...

  3. 计算机13E怎么转换成十进制,十六进制换算(进制转换计算器)

    把下面的16进制转为10进制b35de1f058c72a7430241461cd504839dc27438e. 16进制转10进制16进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第 ...

  4. js中parseInt与parseFloat在进制转换的区别

    项目中需要转换一个16进制数0x00000000000000000000000000000000000000001c0bed842bda49e0fc480000,因为考虑到可能是一个小数,所以使用了p ...

  5. C# 中关于汉字与16进制转换的代码

    /// <summary>     /// 从汉字转换到16进制     /// </summary>     /// <param name="s" ...

  6. python十进制转八进制_python进制转换(二进制、十进制和十六进制)及注意事项...

    使用内置函数实现进制转换实现比较简单,主要用到以下函数: bin().oct().int().hex() 下面分别详解一下各个函数的使用(附实例) 第一部分:其他进制转十进制 1.二进制转十进制 使用 ...

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

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

  8. Java 中常用的进制转换

    前言 所谓进制转换,就是人们利用符号来计数的方法.进制转换由一组数码符号和两个基本因素"基数"和"位权"所构成.其中基数是指进位计数制中所采用的数码的个数,逢  ...

  9. 在游戏中学会进制转换

    有什么好的办法让学生在开心愉快的氛围里不知不觉学会进制转换呢?我首先想到了玩游戏.因为在游戏中规则总是第一个被记住的.如果我把规则变成进制转换的知识点,那么学生就会在第一时间记住这个知识点!我想网上一 ...

最新文章

  1. springMVC参数传递(三)
  2. Linux 中Sublime Text 3无法输入中文的问题
  3. 老板,用float存储金额为什么要扣我工资
  4. PPT 下载 | 桑文锋:数据化建设的时代机遇
  5. 【学习笔记】opencv的python接口 几何变换
  6. 手动脱UPX壳的几种方法
  7. java mvc 导入_Java SpringMVC文件导入和导出
  8. c#10中的namespace
  9. HISTFILESIZE与HISTSIZE的区别
  10. Deep learning with python notebooks 笔记 第一章 深度学习基础
  11. 面向科研的推荐系统Benchmark诞生!
  12. Java 基础知识体系
  13. 构建一个可行的BI系统的造价是多少,实施周期?具备条件基础是什么? 数据量有要求么
  14. 物联网设备通过MQTT接入华为iot平台
  15. [转]安装win7系统不产生100M保留分区
  16. 【Android】Android 集成芯烨云打印机实现打印票据
  17. 富龙飞联手文创产业研究所,推出国内首个AR+文创建设应用系统
  18. char可以存储汉字吗?为什么
  19. 20175208 实验一 Java开发环境的熟悉
  20. nginx缓冲区链表chain

热门文章

  1. Sharding Sphere
  2. 租房变欠贷?这“租金贷”连法院工作人员都被套路了
  3. 信息系统安全等级保护基本要求——技术要求
  4. 小小军团获取服务器配置文件,小小军团2资源获得途径大全_宝石军团币荣誉币高级精华获取方法途径一览_3DM手游...
  5. 多核计算机是指有多个cpu,多核和多个CPU有什么区别?
  6. 2021 年 JS 烧脑面试题大赏
  7. 找合适的PMP机构只需2步搞定,一查二问
  8. 红米适配鸿蒙os,体验亮点满满!鸿蒙OS系统6月份开启适配,不只有华为手机
  9. 开篇-漫漫人生路-程序员
  10. OPPO快应用小游戏 分包 静态方法报错is not a function问题解决