linux shell 不同进制数据转换(二进制,八进制,十六进制,base64) (转)

 

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;   
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

 

  • 十进制转为其它进制

十进制转八进制

这里使用到: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;
0123

0开头已经失去了意义了。

可以通过定义符:let达到(()) 运算效果。

[chengmo@centos5 ~]$ let num=0123;
[chengmo@centos5 ~]$ echo $num;  
83

 

http://www.cnblogs.com/chengmo/archive/2010/10/14/1851570.html

时间: 2024-12-03 15:27:38

linux shell 不同进制数据转换(二进制,八进制,十六进制,base64) (转)的相关文章

Shell脚本中不同进制数据转换的例子(二进制、八进制、十六进制、base64)_linux shell

shell可以在不调用第3方命令,表示不同进制数据.这里总结以下表示方法.shell 脚本默认数值是由10 进制数处理,除非这个数字某种特殊的标记法或前缀开头. 才可以表示其它进制类型数值.如:以 0 开头就是 8 进制.以0x 开头就是16 进制数.使用 BASE#NUMBER 这种形式可以表示其它进制.BASE值:2-64. 使用方法: 其它进制转为10进制 八进制转十进制: 复制代码 代码如下: [chengmo@centos5 ~]$ ((num=0123)); [chengmo@cen

php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码

十进制转换为二进制.八进制.十六进制 从十进制向其它进制转换,用的是就用该数字不断除以要转换的进制数,读取余数.连接一起就可以了. 复制代码 代码如下: <?php /** *十进制转二进制.八进制.十六进制 不足位数前面补零* * * @param array $datalist 传入数据array(100,123,130) * @param int $bin 转换的进制可以是:2,8,16 * @return array 返回数据 array() 返回没有数据转换的格式 * @copyrig

不同进制数据转换显示-NFC标签数据读取显示,本来应当为正数却显示结果为负数

问题描述 NFC标签数据读取显示,本来应当为正数却显示结果为负数 如下就是读取NFC标签数据的代码,并在调试窗口将读出的数据显示出来我的问题是:NFC里面的数据本来就全是正数,但是读取出来后在电脑端显示却为负数,(我猜测是不是,在NFC里面的数全是16进制的,然后手机端读取出来后显示为10进制的数时,出现编码错误,从而导致变为负数了)那么如何将读取出的数据全部显示为正数,求大神赐教,在线等,急!!byte[] result = tagUtil.readAllPages(intent false)

HexConversion 二进制 八进制 十六进制 十进制

public class HexConversion { // TODO Auto-generated method stub /** * TODO 进制转换. * * @param cc * http://yunpan.cn/QD8epsIs6YPXG */ public static void main(String[] args) { /** * 基本原理 二进制-->十进制 * * 1101(2)=1*2^0+0*2^1+1*2^2+1*2^3=1+0+4+8=13 * * 八进制-->

Python进制转换(二进制/八进制/十进制/十六进制)

Python 进制转换 二进制 八进制 十进制 十六进制 作者:方倍工作室 地址:http://www.cnblogs.com/txw1958/p/python3-scale.html    全局定义 base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)]   二进制 to 十进制 : int(str,n=10)  def bin2dec(string_num): return str(

Python中不同进制互相转换(二进制、八进制、十进制和十六进制)_python

在我的印象里面进制互相转换确实是很常见的问题,所以在Python中,自然也少不了把下面这些代码收为util. 这是从网上搜索的一篇也的还可以的Python进制转换,经过验证可以使用.下面贴出它的实现代码: #!/usr/bin/env python # -*- coding: utf-8 -*- # 2/10/16 base trans. wrote by srcdog on 20th, April, 2009 # ld elements in base 2, 10, 16. import os

Linux Shell脚本系列教程(五):数学运算

  这篇文章主要介绍了Linux Shell脚本系列教程(五):数学运算,本文讲解了使用let.(())和[]进行算术运算.使用expr进行算术运算.使用bc进行算术运算三种方法,需要的朋友可以参考下 在任何一种编程语言中,算术运算都是必不可少的,shell也不例外. 一. 使用let.(())和[]进行算术运算 可以使用普通变量赋值方法定义数值,这是,它会被保存为字符串.我们可以通过使用let.(()).[]等操作符,使得这些变量进行算术运算.例如: 代码如下: #!/bin/bash no1

javascript-js 如何将16进制数据转浮点数

问题描述 js 如何将16进制数据转浮点数 js 如何将16进制数据转浮点数 我想 把str ='AB23FF12E1' 这个转成浮点数 解决方案 http://blog.csdn.net/yin138/article/details/13504441 解决方案二: 补充一句,123.456(float) = '79 E9 F6 42'; 如何把 '79 E9 F6 42'; 还原回 123.456呢? 解决方案三: 补充一句,123.456(float) = '79 E9 F6 42'; 如何

PHP 一般字符《=》16 // 2进制

Java代码   function hex2bin($hexData)    {       $binData = "";       for ($i = 0; $i < strlen($hexData); $i += 2) {           $binData .= chr(hexdec(substr($hexData, $i, 2)));       }       return $binData;   }      function encodeHex($str)  /