包括:

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 进制转换的更多相关文章

  1. Linux命令之bc - 浮点计算器、进制转换

    用途说明 Bash内置了对整数四则运算的支持,但是并不支持浮点运算,而bc命令可以很方便的进行浮点运算,当然整数运算也不再话下.手册页上说bc是An arbitrary precision calcu ...

  2. Erlang 进制转换

    http://www.cnblogs.com/me-sa/archive/2012/03/20/erlang0047.html bnot unary bitwise not integer div i ...

  3. SQL Server 进制转换函数

    一.背景 前段时间群里的朋友问了一个问题:“在查询时增加一个递增序列,如:0x00000001,即每一个都是36进位(0—9,A--Z),0x0000000Z后面将是0x00000010,生成一个像下 ...

  4. [No000071]C# 进制转换(二进制、十六进制、十进制互转)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  5. JS中的进制转换以及作用

    js的进制转换, 分为2进制,8进制,10进制,16进制之间的相互转换, 我们直接利用 对象.toString()即可实现: //10进制转为16进制 ().toString() // =>&q ...

  6. 结合stack数据结构,实现不同进制转换的算法

    #!/usr/bin/env python # -*- coding: utf-8 -*- # learn <<Problem Solving with Algorithms and Da ...

  7. 进制转换( C++字符数组 )

    注: 较为简便的方法是用 整型(int)或浮点型(long.double 注意:该类型不一定能够准确存储数据) 来存放待转换的数值,可直接取余得到每一位数值 较为稳定的方法是用 字符数组储存待转换的数 ...

  8. JS 进制转换

    十进制转换成其他进制 objectname.toString([radix])   objectname 必选项.要得到字符串表示的对象. radix 可选项.指定将数字值转换为字符串时的进制. 例如 ...

  9. php的进制转换

    学习了php的进制转换,有很多的知识点,逻辑,也有最原始的笔算,但是我们还是习惯使用代码来实现进制的转换,进制的转换代码有如下:二进制(bin)八进制( oct)十进制( dec)十六进制( hex) ...

随机推荐

  1. Dubbo简介2

    Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成.具体可以看 百度百科 https://baike.ba ...

  2. window.frames[]在Firefox下无法兼容的解决方式

    html代码段: <iframe id="fr" src="ProjectTree.aspx?IsFree=true&f=yes&IsCheckPr ...

  3. UNIX环境编程学习笔记(17)——进程管理之进程的几个基本概念

    lienhua342014-10-05 1 main 函数是如何被调用的? 在编译 C 程序时,C 编译器调用链接器在生成的目标可执行程序文件中,设置一个特殊的启动例程为程序的起始地址.当内核执行 C ...

  4. 【python】泰语分词器安装

    1.安装icu http://blog.csdn.net/liyuwenjing/article/details/6105388 2.安装pyicu https://anaconda.org/kale ...

  5. 将Unity导出的Eclipse工程转换为AndroidStudio工程

    步骤:1)将unity项目导出到文件夹: 转换到安卓平台,这里只勾选google android project.然后导出到自己新建的文件夹. 2)打开导出的文件夹,看到如下内容.这是unity5.x ...

  6. IT管理就这么管

    随着信息系统的广泛应用,员工没有电脑就无法工作,企业离开信息系统就无法顺利开展业务.信息部作为企业的内部信息化部门,承担了包括软件开发.系统维 护.硬件维护的几乎所有IT相关任务,对保障公司业务系统的 ...

  7. 通过Nginx反向代理,IIS和apache 共用80端口

    #user nobody; worker_processes ; #error_log logs/error.log; #error_log logs/error.log notice; #error ...

  8. 一个日志模板,从traceback打印异常受启发做的模板,可被pycharm esclip 等ide识别和跳转

    之前发过日志,再增加一种模板. logging.Formatter('%(asctime)s - %(name)s - File "%(pathname)s", line %(li ...

  9. python打造线程池

    # coding=utf-8 import threading import Queue import time import traceback class ThreadPoolExecutor(o ...

  10. IOS端的摇一摇功能

    //微信的摇一摇是怎么实现的~发现原来 ios本身就支持 //在 UIResponder中存在这么一套方法 - (void)motionBegan:(UIEventSubtype)motion wit ...