shell 进制转换
包括:
i.任意进制转化为十进制((num=base#number)) 【base和number必须一致,是同一种进制】
ii.十进制转化为任意进制`echo "obase=进制;值"|bc` 和`echo "值 进制 o p"|dc` 【这里的值代表十进制数字】
iii.任意进制互转;有了i和ii就可以用十进制做中间媒介值互转了。
如:二进制到十六进制
((num=2#二进制数字));
hexValue=`echo "obase=16;num"|bc`;
shell 脚本默认数值是由10 进制数处理,除非这个数字某种特殊的标记法或前缀开头. 才可以表示其它进制类型数值。
如:以 0 开头就是 8 进制;以0x 开头就是16 进制数;
使用 BASE#NUMBER 这种形式可以表示其它进制。BASE值:2-64.
使用方法:
1.其它进制转为10进制
八进制转十进制:
[chengmo@centos5 ~]$ ((num=0123));
[chengmo@centos5 ~]$ echo $num;
83
[chengmo@centos5 ~]$ ((num=8#123));
[chengmo@centos5 ~]$ echo $num;
83
((表达式)),(())里面可以是任意数据表达式。如果前面加入:”$”可以读取计算结果。
如:echo $((num=2#11111111)) 显示255 ;同时值也存入num变量中
十六进制转十进制:
[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
2.十进制转为其它进制
十进制转八进制
i.这里使用到:bc外部命令完成。bc命令格式转换为:echo "obase=进制;值"|bc
[chengmo@centos5 ~]$ echo "obase=8;1234567"|bc
4553207
[chengmo@centos5 ~]$ echo "obase=2;255"|bc
11111111
十进制转化为 二进制,十六进制,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
ii.十进制数字转换为其它进制数字
bc命令格式转换为:`echo "number 进制 o p"|bc`
如:
hexcvt ()
{
if [ -z "$1" ]
then
return 0 # 如果没有参数传递到这个函数中就return 0.
fi
echo "255 16 o p" | dc #返回十进制255的十六进制数字
# "255" 源数据
# "16" 十六进制
# "o" 字母o设置输出的基数(数制).
# "p" 字母p打印结果.
# 察看 dc 的 man 页来了解其他的选项.
return
}
shell 进制转换的更多相关文章
- Linux命令之bc - 浮点计算器、进制转换
用途说明 Bash内置了对整数四则运算的支持,但是并不支持浮点运算,而bc命令可以很方便的进行浮点运算,当然整数运算也不再话下.手册页上说bc是An arbitrary precision calcu ...
- Erlang 进制转换
http://www.cnblogs.com/me-sa/archive/2012/03/20/erlang0047.html bnot unary bitwise not integer div i ...
- SQL Server 进制转换函数
一.背景 前段时间群里的朋友问了一个问题:“在查询时增加一个递增序列,如:0x00000001,即每一个都是36进位(0—9,A--Z),0x0000000Z后面将是0x00000010,生成一个像下 ...
- [No000071]C# 进制转换(二进制、十六进制、十进制互转)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- JS中的进制转换以及作用
js的进制转换, 分为2进制,8进制,10进制,16进制之间的相互转换, 我们直接利用 对象.toString()即可实现: //10进制转为16进制 ().toString() // =>&q ...
- 结合stack数据结构,实现不同进制转换的算法
#!/usr/bin/env python # -*- coding: utf-8 -*- # learn <<Problem Solving with Algorithms and Da ...
- 进制转换( C++字符数组 )
注: 较为简便的方法是用 整型(int)或浮点型(long.double 注意:该类型不一定能够准确存储数据) 来存放待转换的数值,可直接取余得到每一位数值 较为稳定的方法是用 字符数组储存待转换的数 ...
- JS 进制转换
十进制转换成其他进制 objectname.toString([radix]) objectname 必选项.要得到字符串表示的对象. radix 可选项.指定将数字值转换为字符串时的进制. 例如 ...
- php的进制转换
学习了php的进制转换,有很多的知识点,逻辑,也有最原始的笔算,但是我们还是习惯使用代码来实现进制的转换,进制的转换代码有如下:二进制(bin)八进制( oct)十进制( dec)十六进制( hex) ...
随机推荐
- 启动zookeeper时出现的问题
zkEnv.cmd @echo off REM Licensed to the Apache Software Foundation (ASF) under one or more REM contr ...
- datepicker clone 控件错误
删除id,并删除hasDatepicker //+ - function changeRows(sender,desc){ var tr = $(sender).closest("tr&q ...
- winform 实现选择文件和选择文件夹对话框
//选择文件,点击[浏览],选择文件 private void button1_Click(object sender, EventArgs e) { OpenFileDialog openFileD ...
- String学习之-深入解析String#intern
引言 在 JAVA 语言中有8中基本类型和一种比较特殊的类型String.这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念.常量池就类似一个JAVA系统级别提供的缓存. 8 ...
- 本地文件到通过flume到kafka
配置文件 cd /usr/app/flume1.6/conf vi flume-dirKakfa.properties #agent1 name agent1.sources=source1 agen ...
- yum 安装mysql, yum安装指定版本的mysql
yum安装mysql: 1. 查看有没有安装过 yum list installed MySQL* (有存在要卸载yum remove MySQL*) rpm -qa | grep m ...
- UINavigationController popToViewController用法
popToViewController用法 [self.navigationController popToViewController:[self.navigationController.vie ...
- eclipse中设置文件的编码格式为utf-8
1.可以在 eclipse 中配置 workspace 项下 text file encoding 属性的值来决定此工作区间下所有的 eclipse 项目的文档的编码属性. Window-->P ...
- iOS 使用正则表达式库RegexKitLite的问题
因为RegexKitLite使用ICU库,所以需要动态链接到/usr/lib/libicucore.dylib库当中去,否则你会得到错误.具体Dynamically linked to /usr/li ...
- Ansible 使用 Playbook 管理 Nginx 配置文件
前面我们已经安装完 Nginx,但是在日常维护中经常需要修改配置文件,并重新加载配置文件,因此来写一个管理 Nginx 配置文件的 Playbook: [root@localhost ~]$ mkdi ...