使用 Shell 运算进行进制转换 16进制转10进制
使用 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进制相关推荐
- 进制转换通用模板(以10进制转换为7进制为例)
class Solution { public:string convertToBase7(int num) {if(num==0){return "0";}string ans; ...
- linux c int16进制转10进制,[编程题] 进制转换(16进制转10进制)
[编程题] 进制转换 3/3 [编程题] 进制转换 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示. ...
- (大数)进制转换 —— 16、8进制转换成2进制
(大数)进制转换 --16.8进制转2进制 16进制转2进制示例代码: #include <iostream> using namespace std; int main(){string ...
- 关于signed char类型的16进制数据转成带符号的10进制问题
文章目录 前言 signed char类型的16进制数据如何转成带符号的10进制数? 总结 前言 在最近的学习中,遇到了一个疑惑,三组16进制的数据分别为0xFF,0xF3,0x2A;这三组16进制的 ...
- 10进制转换16进制补足0_信息技术教师资格必考内容——进制换算(一)
前两天给大家整理了信息技术教师资格笔试科目三的必考内容,戳蓝字回顾弄懂这些,信息技术教师资格笔试提高30分!信息技术教师资格笔试--这道20分的题居然这么简单!有小伙伴问还有哪些必考内容进制换算也是必 ...
- 【蓝桥杯】python进制转换16进制转8进制。16进制转10进制。10进制转16进制。
问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 样例输入 2 39 123ABC 样例输出 71 4435274 n = int(input()) #输入一个正整数n,表示n个十六进制正整 ...
- Python进制转换的完全实现——2/10/16进制原/补码互转
一.需要转换的几种情况 不带符号位的整数 2进制 10进制 16进制 2进制 – bin2dec() bin2hex() 10进制 dec2bin() – dec2hex() 16进制 hex2bin ...
- java语言编写进制转换_Java 3种方法实现进制转换
由其他进制转换为十进制比较简单,下面着重谈一谈十进制如何化为其他进制. 1.使用Java带有的方法Integer,最简单粗暴了,代码如下 //使用java提供的方法 //但仅局限于比较常用的二进制.八 ...
- c语言课程设计进制转换摘要,C语言课程设计-进制转换.doc
沈阳航空航天大学 课 程 设 计 报 告 课程设计名称:C语言课程设计 课程设计题目: 二.八.十.进制转换程序 院(系):计算机学院 专 业:计算机科学与技术(物联网方向) 班 级学 号: 姓 名: ...
最新文章
- 导致美国大范围网络瘫痪的Mirai僵尸网络
- 【 FPGA 】UltraFast设计方法学笔记(RTL代码风格1)
- [转] Android系统版本号和Android API level对应表
- 谈谈StorageEvent
- callable object与新增的function相关 C++11中万能的可调用类型声明std::function...
- oracle 10g 学习之函数和存储过程(12)
- 用maven搭建多模块项目
- js dojo 读取txt
- 一个简易的选择小时(时分秒)的插件
- Java获取http和https协议返回的json数据
- 开发分布式WebIm--1(设想)
- 电子护照阅读器便捷通行管理系统
- 上山能养鸡,下海能养鲍鱼,他如何依靠养殖成为富翁
- 中国杀软套路深:CIA怼遍全世界竟然干不过它
- 《天天数学》连载62:三月二日
- 你的好帮手,优质chatgpt镜像网站
- 高等数学——手撕牛顿莱布尼茨公式
- 11 岁编程,21 岁开发 Linux 系统,这就是顶尖程序员的样子!
- 如何下载指定版本(旧)的visual studio
- 基于MindSpore框架的室内场景图像分割方法研究
热门文章
- 脑机接口等在线学习课堂视频分享(供下载)
- 介绍芯片时为什么都要介绍制程?制程到底是什么?14nm、10nm?
- nodejs-5.1 ejs模板引擎
- HP-UNIX RAC 11.2.0.4 安装文档
- python中的除法运算定律_四年级上册数学《运算定律》教学总结(精选6篇)
- 计算机技术对社会的消极影响,【信息技术引发的社会问题】_请举一个例子说说信息技术对社会带来哪些消极的影响,你能分析一下......
- c语言程序如下,某C语言程序如下: #include stdio.h void main() { floa.._简答题试题答案...
- 疯狂的红色石头孵化出疯狂的鸡蛋
- Kylin作用是什么?
- 揭秘IPFS数据交换模块Bitswap