使用 Shell 运算进行进制转换

工作时候常常遇到一些问题,拿到的数字是16进制的,但是运算的时候是10进制的,shell可以很方便的处理这类的进制转换问题,一种情况是使用 Shell 运算把一个数字从给定的进制转换位十进制。如果数字以运算展开式的形式提供,那么假定它带有十进制符号,除非 它前面带有 0(这种情况假定是八进制)或 0x(这种情况假定是十六进制)。键入以下内容以得到一些八进制和十六进制值的十进制输出:

$ echo $((013))$ echo $((0xA4))

您还可以使用以下格式指定 2 到 64 之间的任意进制:

$((BASE#NUMBER))

通过在 Shell 提示符后键入清单 7 中所示的行,尝试将二进制、八进制、十六进制以及其他进制的数转换为十进制。

清单 7. 在 Shell 中将任意进制的数以十进制输出

                     echo $((2#1101010))echo $((8#377))echo $((16#D8))echo $((12#10))echo $((36#ZZYY))

使用 bc 进行进制转换

在 Shell 中进行进制转换的另一个诀窍是使用 bc,它是一种任意精度运算语言,大多数 UNIX 安装程序都提供。因为它允许您指定输出进制,所以当您需要以十进制以外的进制输出时,这是一种很好的技术。

bc 的特殊变量 ibase 和 obase 分别包含用于输入和输出的进制的值。缺省情况下,都被设置为 10。要执行进制转换,需要改变其中的一个或两个值,然后提供一个数字。立即尝试,如清单 8 中所示。

清单 8. 使用 bc 执行进制转换

                     $ bc -ql1010obase=1610Aibase=2102                                                  Control-D                                             $

要快速执行进制转换,可以联合使用 bc 和 echo形成快捷的单命令行程序,将给定的值通过管道传输给 bc。键入清单 9 中显示的内容。

清单 9. Shell 单命令行 bc 程序

                     $ echo 'obase=16; 47' | bc2F$ echo 'obase=10; ibase=16; A03' | bc2563$

警告:当您设置 bc 的输入进制以后,输入 bc 的所有数字都使用该进制,包括您提供用于设置输出进制的数字。因此最好先设置输出进制,否则可能会产生意想不到的结果,如清单 10 中所示。

清单 10. 设置输入和输出进制的先后顺序的重要性

                     $ echo 'ibase=16; obase=10; A' | bcA$ echo 'ibase=16; obase=A; A' | bc10$

除了上面的所有方法 还有一种简单的方式是使用printf做进制转换,例:

a=`printf "%d"  0xef`

echo $a

>239

http://www.liyu8.com/article/91.htm

使用 Shell 运算进行进制转换 16进制转10进制相关推荐

  1. 进制转换通用模板(以10进制转换为7进制为例)

    class Solution { public:string convertToBase7(int num) {if(num==0){return "0";}string ans; ...

  2. linux c int16进制转10进制,[编程题] 进制转换(16进制转10进制)

    [编程题] 进制转换 3/3 [编程题] 进制转换 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示. ...

  3. (大数)进制转换 —— 16、8进制转换成2进制

    (大数)进制转换 --16.8进制转2进制 16进制转2进制示例代码: #include <iostream> using namespace std; int main(){string ...

  4. 关于signed char类型的16进制数据转成带符号的10进制问题

    文章目录 前言 signed char类型的16进制数据如何转成带符号的10进制数? 总结 前言 在最近的学习中,遇到了一个疑惑,三组16进制的数据分别为0xFF,0xF3,0x2A;这三组16进制的 ...

  5. 10进制转换16进制补足0_信息技术教师资格必考内容——进制换算(一)

    前两天给大家整理了信息技术教师资格笔试科目三的必考内容,戳蓝字回顾弄懂这些,信息技术教师资格笔试提高30分!信息技术教师资格笔试--这道20分的题居然这么简单!有小伙伴问还有哪些必考内容进制换算也是必 ...

  6. 【蓝桥杯】python进制转换16进制转8进制。16进制转10进制。10进制转16进制。

    问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 样例输入 2 39 123ABC 样例输出 71 4435274 n = int(input()) #输入一个正整数n,表示n个十六进制正整 ...

  7. Python进制转换的完全实现——2/10/16进制原/补码互转

    一.需要转换的几种情况 不带符号位的整数 2进制 10进制 16进制 2进制 – bin2dec() bin2hex() 10进制 dec2bin() – dec2hex() 16进制 hex2bin ...

  8. java语言编写进制转换_Java 3种方法实现进制转换

    由其他进制转换为十进制比较简单,下面着重谈一谈十进制如何化为其他进制. 1.使用Java带有的方法Integer,最简单粗暴了,代码如下 //使用java提供的方法 //但仅局限于比较常用的二进制.八 ...

  9. c语言课程设计进制转换摘要,C语言课程设计-进制转换.doc

    沈阳航空航天大学 课 程 设 计 报 告 课程设计名称:C语言课程设计 课程设计题目: 二.八.十.进制转换程序 院(系):计算机学院 专 业:计算机科学与技术(物联网方向) 班 级学 号: 姓 名: ...

最新文章

  1. 导致美国大范围网络瘫痪的Mirai僵尸网络
  2. 【 FPGA 】UltraFast设计方法学笔记(RTL代码风格1)
  3. [转] Android系统版本号和Android API level对应表
  4. 谈谈StorageEvent
  5. callable object与新增的function相关 C++11中万能的可调用类型声明std::function...
  6. oracle 10g 学习之函数和存储过程(12)
  7. 用maven搭建多模块项目
  8. js dojo 读取txt
  9. 一个简易的选择小时(时分秒)的插件
  10. Java获取http和https协议返回的json数据
  11. 开发分布式WebIm--1(设想)
  12. 电子护照阅读器便捷通行管理系统
  13. 上山能养鸡,下海能养鲍鱼,他如何依靠养殖成为富翁
  14. 中国杀软套路深:CIA怼遍全世界竟然干不过它
  15. 《天天数学》连载62:三月二日
  16. 你的好帮手,优质chatgpt镜像网站
  17. 高等数学——手撕牛顿莱布尼茨公式
  18. 11 岁编程,21 岁开发 Linux 系统,这就是顶尖程序员的样子!
  19. 如何下载指定版本(旧)的visual studio
  20. 基于MindSpore框架的室内场景图像分割方法研究

热门文章

  1. 脑机接口等在线学习课堂视频分享(供下载)
  2. 介绍芯片时为什么都要介绍制程?制程到底是什么?14nm、10nm?
  3. nodejs-5.1 ejs模板引擎
  4. HP-UNIX RAC 11.2.0.4 安装文档
  5. python中的除法运算定律_四年级上册数学《运算定律》教学总结(精选6篇)
  6. 计算机技术对社会的消极影响,【信息技术引发的社会问题】_请举一个例子说说信息技术对社会带来哪些消极的影响,你能分析一下......
  7. c语言程序如下,某C语言程序如下: #include stdio.h void main() { floa.._简答题试题答案...
  8. 疯狂的红色石头孵化出疯狂的鸡蛋
  9. Kylin作用是什么?
  10. 揭秘IPFS数据交换模块Bitswap