`
fp_moon
  • 浏览: 977618 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Linux shell 进制转换

阅读更多

 Linux shell 进制转换

 

 包括:

 i.任意进制转化为十进制((num=base#number)) 【base和number必须一致,是同一种进制】

 ii.十进制转化为任意进制`echo "obase=进制;值"|bc` 和`echo "值 进制 o  p"|bc` 【这里的值代表十进制数字】

 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--浮点计算器、进制转换

    ### Linux命令之bc -- 浮点计算器、进制转换 #### 概述 在Linux环境中,用户经常需要处理各种计算任务。尽管Bash环境已经具备了处理整数运算的能力,但对于涉及浮点数的复杂计算,则显得力不从心。这时,`bc` 命令...

    linux shell 实现IP和数字的转换

    下面我们将详细介绍如何使用Linux Shell实现这两种IP地址形式的转换。 首先,我们要了解IP地址的十进制表示。一个IP地址由4个八位字节组成,每个字节的范围是0到255。例如,IP地址192.168.1.1可以转换为十进制整数...

    Hex-conversion.zip_conversion_linux 十六进制

    此外,Linux还提供了许多内置工具来进行十六进制转换,例如`od`(octal dump)命令可以用于将十进制数转换为十六进制字符串,`bc`计算器支持各种数值计算,包括十进制到十六进制的转换。这些工具在日常开发和调试中...

    shell实现netmask掩码和cidr掩码位转换1

    shell实现netmask掩码和cidr掩码位转换 Shell 实现 Netmask 掩码和 CIDR 掩码位转换是一种常用的网络协议 软件/插件,经常在写脚本时...* 《Unix/Linux Shell 编程》 * 《网络协议基础》 * 《Shell 脚本编程技术》

    Shell转换成C

    在Unix/Linux环境中,为了增强脚本的安全性,有时我们需要将Shell脚本转换成C语言代码,然后编译成可执行程序。这个过程主要是利用一种工具,例如`shc`(Shell to C Compiler),它能够将Bash或其它Shell脚本转化为C...

    在linux环境中将Excel转换成文本的命令

    自动化任务以shell为例,shell不能直接操作Excel文档,需要将Excel转换成文本然后在解析和分析,我使用GO语言开发编译成二进制命令,上传到服务器当命令使用。

    给linux的shell脚本加密(ZT).rar_Linux shell_shell 脚本_shell加密_shell脚本

    可以使用一些工具(如shc - Shell Script Compiler)将脚本转换为编译过的二进制形式,使得原始代码难以理解。shc将Shell脚本转换为一个可执行的C程序,这个程序包含了加密后的脚本内容。 2. **使用加密容器**:...

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

    bc 工具也可以进行进制转换。例如: no=100 echo obase=2;$no | bc obase 为目标进制,ibase 为原进制,默认情况下原进制为 10。 bc 工具还可以计算平方根和平方。例如: echo sqrt(100) | bc echo 10^10 | bc ...

    linux处理10万个二进制文件

    总之,Linux Shell和`awk`命令提供了一种高效的方式来处理二进制文件,包括读取特定字节、进行数学运算以及修改文件内容。对于大规模的二进制文件操作,这种自动化处理方式尤其重要,能够显著提高工作效率。在实际...

    shellex:C-shellcode 到十六进制转换器,在 gdb、windbg、radare2、ollydbg、x64dbg、免疫调试器和 010 编辑器中粘贴和执行 shellcode 的便捷工具

    Shellex 警告:世界上最丑的代码C-shellcode 到十六进制转换器。 在 gdb、windbg、radare2、ollydbg、x64dbg、immunity debugger 和 010 编辑器中粘贴和执行 shellcode 的便捷工具。 您在将 C-shellcode 转换为 HEX ...

    Linux系统管理-shell基础1.pdf

    Linux系统管理中的Shell基础主要涉及对Shell这一概念的理解和运用。Shell是用户和操作系统之间交互的一种接口,它提供了一个命令行界面,允许用户输入命令并执行。Shell能够解释用户输入的命令,并调用相应的系统...

    linux_shell编程实例与参数分析

    `umask`的计算方式是取反并加7,所以`002`取反加7得到`664`(二进制的`002`对应十进制的2,取反为`111`,加7即`111+010=111`,转换为八进制就是`664`)。 接下来,我们讨论`ln`命令,它用于创建链接。`ln source...

    《linux_shell脚本攻略》学习总结

    例如,可以设置小数精度(`scale=2`),进行进制转换,计算平方和平方根。 6. **stdin、stdout、stderr和tee**:在Linux中,0代表stdin,1代表stdout,2代表stderr。`tee`命令可以将数据同时输出到屏幕和文件,`-a`...

    UNIX新手指南_一些很好的Shell诀窍_au-unixtips4-pdf.pdf

    在Shell编程中,进制转换是常见的需求。例如,你可以使用内置的expr命令或awk工具来完成这些转换。在Shell脚本中,这些转换可以帮助你处理不同格式的数字信息,特别是在处理文件属性或进行系统配置时。 管道和循环...

    linux shell Sed学习笔记

    ### Linux Shell Sed 学习笔记:深入理解与实践 #### Sed 概览 Sed(Stream Editor)是一种功能强大的文本处理工具,适用于Unix/Linux环境下的流编辑操作。它能够读取输入流(如文件或标准输入),进行模式匹配、...

    Linux_Shell编程基础

    目录 • 1 变量赋值和引用 2 Shell 里的流程控制 o 2.1 if 语 句 o 2.2 && 和 || 操作符 o 2.3 case 语句 o 2.4 select 语句 o 2.5 while/for 循环 ...o 6.1 二进制到十进制的转换 o 6.2 文件循环拷贝 • 7 脚本调试

    Linux-Shell特殊字符和控制字符大全

    - `echo $((2#101011))`:此处`#`用于二进制数制转换。 ##### 2. `;` 分隔符 - **用途**:用于在同一行中分隔多个命令。 - **示例**: - `echo "aa"; echo "bb"`:此行将执行两条命令。 - `if condition; then`...

    Linux-shell编程07

    【Linux Shell 编程】 在Linux环境中,Shell编程是一种强大的工具,用于自动化任务和管理系统。本文主要讨论了两个核心主题:使用`sed`进行文本处理以及正则表达式的应用。 ### Sed 进阶 `sed`(流编辑器)是Linux...

Global site tag (gtag.js) - Google Analytics