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进制

八进制转十进制:

[[email protected] ~]$ ((num=0123));
[[email protected] ~]$ echo $num;
83

[[email protected] ~]$ ((num=8#123));
[[email protected] ~]$ echo $num;    
83

((表达式)),(())里面可以是任意数据表达式。如果前面加入:”$”可以读取计算结果。

十六进制转十进制:

[[email protected] ~]$ ((num=0xff)); 
[[email protected] ~]$ echo $num;    
255
[[email protected] ~]$ ((num=16#ff));
[[email protected] ~]$ echo $num;    
255

base-32转十进制:

[[email protected] ~]$ ((num=32#ffff));
[[email protected] ~]$ echo $num;      
507375

base64转十进制:

[[email protected] ~]$ ((num=64#abc_)); 
[[email protected] ~]$ echo $num;       
2667327

二进制转十进制

[[email protected] ~]$ ((num=2#11111111));  
[[email protected] ~]$ echo $num;
255

  • 十进制转为其它进制 (本章节有误,特此提示!)

十进制转八进制

这里使用到:bc外部命令完成。bc命令格式转换为:echo "obase=进制;值"|bc

[[email protected] ~]$ echo "obase=8;01234567"|bc
4553207

二进制,十六进制,base64转换为 十进制也相同方法。

[[email protected] ~]$ echo "obase=64;123456"|bc  
30 09 00

shell,内置各种进制表示方法非常简单。记得base#number 即可。这里记得赋值时候用(())符号。不能直接用=号了。=号没有值类型。默认将后面变成字符串了。如:

[[email protected] ~]$ num=0123;
[[email protected] ~]$ echo $num;
0123

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

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

[[email protected] ~]$ let num=0123;
[[email protected] ~]$ echo $num;   
83

时间: 2024-10-28 20:35:22

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

Linux Shell 不同进制数据转换

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

python的进制转换二进制,八进制,十六进制及其原理

#!usr/bin/env python# coding:utf-8 def binary(): '''二进制的方法与算法'''    Number = 10    Number1 = 20    Number2 = 30    print bin(Number),type(bin(Number1)),bin(Number2) #用十进制算法来表示二进制   # 除余法:10%2=0放入字符串个位'0',5%2=1放入字符串的十位'10',2%2=0放入百位'010',最后余数放入千位'1010

10进制转二进制字符串输出

import java.util.Scanner; /** * Created by longforus on 9:10 PM 5/9/2016 . * IDEA-Test . * 输入10进制 输出二进制字符串 先计算该数包含最大的2次方结果 每减去一个该数 该位二进制 * 就记1 不够减就记0 a减完以后补全0 */ public class Chapter4_37 { public static void main (String[] args) { System.out.println

shell 编程进制转换

shell脚本在处理数据的时候,默认是10进制,通过特殊的标记或者前缀可以转换为其他的进制. 以 0 开头就是 8 进制.以0x 开头就是16 进制数. 1. 使用 BASE#NUMBER 这种形式可以表示其它进制.BASE值的取值范围:2-64. 2. 赋值时候用(())符号.不能直接用=号了.=号没有值类型.默认将后面变成字符串了. 3. 可以通过定义符:let达到(()) 运算效果. 十进制转换为其他进制 ((表达式)),(())里面可以是任意数据表达式.如果前面加入:”$”可以读取计算结

【进制】二进制十进制转换练习

进制转换练习题22.8125 整数部分除2取余数,商继续除22/2 余 011/2 15/2 12/2 01倒叙串起来整数部分为 10110小数部分乘2 取整数部分,顺序和整数不一样 0.8125*2 = 1.625 10.625*2 = 1.25 10.25*2 = 0.5 00.5*2 = 1 1结束 正序串起来 1101 10110.1101 十进制转二进制 整数部分 倒序 10110 0*2^0+1*2^1+1*2^2+0*2^3+1*2^4 2+4+16 =22 小数部分正序负数幂11

AES加密 16进制与二进制转换

import java.security.Key; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64; /** * AES安全编码组件 */ public abstract class AES

字节、16进制、二进制

字节代表8个二进制位 16进制,代表四个二进制 所以字节用两个16进制来表示,在java中字节的取值范围为 -128~127 字节转16进制 public String bytesToHexString(byte[] bArr) { StringBuffer sb = new StringBuffer(bArr.length); String sTmp; for (int i = 0; i < bArr.length; i++) { sTmp = Integer.toHexString(0xFF

二进制 八进制 十六进制

二进制 二进制是计算技术中广泛采用的一种数制.二进制数据是用0和1两个数码来表示的数.它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现.当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的.计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0. 20世纪被称作第三次科技革命的重要标志之一的计算机的发明与应用,因为数字计算机只能识别和处理由‘0’.‘1’符号串组成的代码.其运算模式正是二进制.19世

使用JAVA完成十进制到二进制八进制十六进制的转换

/* 十六进制的转换 要求: 1.从键盘输入数据(有输入提示) 2.用自定义方法 增加: 对输入的数,进行8进制和2进制的转换. */ import java.util.Scanner; public class ArrayTest{ public static void main(String[] args){ System.out.print("请输入要转换为16进制的数字:"); Scanner scan=new Scanner(System.in); int num = sca