Linux shell 不同进制数据转换(二进制,八进制,十六进制,base64)
原文: 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;
255base-32转十进制:
[chengmo@centos5 ~]$ ((num=32#ffff));
[chengmo@centos5 ~]$ echo $num;
507375base64转十进制:
[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;
01230开头已经失去了意义了。
可以通过定义符: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)相关推荐
- python十六进制转换成八进制_Python 进制转换 二进制 八进制 十进制 十六进制
全局定义一定不要丢了 全局定义 base = [str(x) for x in range()] + [ chr(x) for x in range(ord('A'),ord('A')+)] 二进制 ...
- 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 ...
- Linux shell中进制转换
1.各种进制转换为十进制 为变量赋值: ((var=base#number)) 显示变量: echo $var 例: ((i=16#fff)) echo $i 4095 ((i=32#abc))ech ...
- 计算机底层入门 02 进制运算二进制和十六进制
1.4 进制运算 八进制计算下面的结果 2 + 3 = 5 2 * 3 = 6 4 + 5 = 11 4 * 5 = 24 运算的本质就是查数 0 1 2 3 4 5 6 7 用十进制来辅助运算,然后 ...
- C# 进制转换(二进制、十六进制、十进制互转) .
C# 进制转换(二进制.十六进制.十进制互转) 由于二进制数在C#中无法直接表示,所以所有二进制数都用一个字符串来表示 例如: 二进制: 1010 表示为 字符串:"1010" ...
- linux进程号转换成16进制,Shell脚本中不同进制数据转换的例子(二进制、八进制、十六进制、base64)...
shell可以在不调用第3方命令,表示不同进制数据.这里总结以下表示方法.shell 脚本默认数值是由10 进制数处理,除非这个数字某种特殊的标记法或前缀开头. 才可以表示其它进制类型数值.如:以 0 ...
- 计算机基础知识 —— 进制(二进制、八进制、十进制、十六进制)
这是一个目录导航 点击 此链接 去学习 更多必须掌握的基础知识! 1.关于进制: 对于进制,我们都很熟悉,从小学开始就知道 1.2-9.10.11- 这就是十进制. 几进制就是逢几进1. 为什么全世界 ...
- 进制转换二进制转八进制_将二进制数制转换为八进制数制
进制转换二进制转八进制 Prerequisite: Number systems 先决条件: 数字系统 To convert binary numbers into octal numbers, we ...
- python 二进制转八进制_Python-八进制、二进制互转
Python-八进制转二进制 input_str = input('请输入待转八进制数:') list_num = [] list_octal = [] lists = [] t = 0 def oc ...
最新文章
- 堆栈,静态变量和普通变量,静态函数和普通函数的区别
- Python安装MySQL模块
- noip2006总结
- python 3.3.3 字面量,正则,反斜杠和原始字符串
- web 折线图大数据量拉取展示方案_对比多种微前端方案
- 深入浅出Flume之原理解析
- 2022前端面试笔试题及答案
- visio2007序列号
- 关于图片或者文件在数据库的存储方式归纳
- AXIS的Calculater 测试
- 【Love2d从青铜到王者】第十一篇:Love2d之图像(Images)
- 时间紧、任务重、资源有限,项目经理如何来保证研发效率?
- CentOS ping本机ip,能ping通,外网ping不通
- 电商数据分析指标体系
- 欧拉函数(求与n互质的数的个数)
- 26、用户 创建用户
- tranmac不能识别_怎么用transmac制作mac安装盘|transmac制作苹果系统启动U盘方法
- 百度收录 百度收录有什么好方法吗
- 自学python推荐廖雪峰网站
- iOS判断运营商类型
热门文章
- uva 12086 - Potentiometers(树状数组)
- P3817 小A的糖果
- 【C++OJ_静态与友元】电视机与遥控器(友元类)
- 百度索引量是什么意思?及如何提高索引量?
- 2022年自考专业考试(英语)语言与文化练习题
- P1058 [NOIP2008 普及组] 立体图
- 【正则表达式 】java 正则表达式 校验日期格式
- linux ps命令缺点,Linux pkill和killall命令的缺陷
- WIN10下Allegro卡死的问题解决
- leetcode:427. 建立四叉树【经典建树】