[转帖]使用 Shell 运算进行进制转换 16进制转10进制

使用,shell,运算,进行,进制,转换 · 浏览次数 : 0

小编点评

```bash # 使用 Shell 运算把一个数字从给定的进制转换位十进制 echo $((013)) echo $((0xA4)) # 使用 bc 进行进制转换 bc -ql $ bc -ql 10 10 obase=16 10 A # 设置输入和输出进制的先后顺序 echo 'ibase=16; obase=10; A' | bc echo 'ibase=16; obase=A; A' | bc 10 ``` **解释:** 1. **使用 `(( ))` 进行进制转换:** 这是一种常用的方法,它可以将十进制转换为其他进制。例如,`013` 是 16进制的 4 个 1 的组合。 2. **使用 `bc` 进行进制转换:** `bc` 是一个用于任意精度运算的语言。它允许您指定输出进制,所以当您需要以十进制以外的进制输出时,这是一种很好的技术。 3. **设置输入和输出进制的先后顺序:** 为了确保 `bc` 解析正确的数字,您需要将输入和输出进制的顺序正确设置。 4. **使用 `printf` 做进制转换:** `printf` 可以用来格式化数字,并将其转换为其他进制。 **注意:** * `obase` 是一个用于存储进制信息的变量,默认值为 10。 * `ibase` 是用于设置输入进制的变量,默认值为 16。 * 您可以在 `bc` 的 `-q`选项中设置输出进制。

正文

使用 Shell 运算进行进制转换

工作时候常常遇到一些问题,拿到的数字是16进制的,但是运算的时候是10进制的,shell可以很方便的处理这类的进制转换问题,一种情况是使用 Shell 运算把一个数字从给定的进制转换位十进制。如果数字以运算展开式的形式提供,那么假定它带有十进制符号,除非 它前面带有 0(这种情况假定是八进制)或 0x(这种情况假定是十六进制)。键入以下内容以得到一些八进制和十六进制值的十进制输出:

$ echo $((013))
                        $ echo $((0xA4))
                                        

 

您还可以使用以下格式指定 2 到 64 之间的任意进制:

$((BASE#NUMBER))
                        

 

通过在 Shell 提示符后键入清单 7 中所示的行,尝试将二进制、八进制、十六进制以及其他进制的数转换为十进制。


清单 7. 在 Shell 中将任意进制的数以十进制输出

                     
                        echo $((2#1101010))
                        echo $((8#377))
                        echo $((16#D8))
                        echo $((12#10))
                        echo $((36#ZZYY))
                        

 

使用 bc 进行进制转换

在 Shell 中进行进制转换的另一个诀窍是使用 bc,它是一种任意精度运算语言,大多数 UNIX 安装程序都提供。因为它允许您指定输出进制,所以当您需要以十进制以外的进制输出时,这是一种很好的技术。

bc 的特殊变量 ibase 和 obase 分别包含用于输入和输出的进制的值。缺省情况下,都被设置为 10。要执行进制转换,需要改变其中的一个或两个值,然后提供一个数字。立即尝试,如清单 8 中所示。


清单 8. 使用 bc 执行进制转换

                     
                        $ bc -ql
                                            10
                        10
                        obase=16
                                            10
                        A
                        ibase=2
                                            10
                        2
                                                                          Control-D                                             
                        $
                        

 

要快速执行进制转换,可以联合使用 bc 和 echo形成快捷的单命令行程序,将给定的值通过管道传输给 bc。键入清单 9 中显示的内容。


清单 9. Shell 单命令行 bc 程序

                     
                        $ echo 'obase=16; 47' | bc
                        2F
                        $ echo 'obase=10; ibase=16; A03' | bc
                        2563
                        $
                        

 

警告:当您设置 bc 的输入进制以后,输入 bc 的所有数字都使用该进制,包括您提供用于设置输出进制的数字。因此最好先设置输出进制,否则可能会产生意想不到的结果,如清单 10 中所示。


清单 10. 设置输入和输出进制的先后顺序的重要性

                     
                        $ echo 'ibase=16; obase=10; A' | bc
                        A
                        $ echo 'ibase=16; obase=A; A' | bc
                        10
                        $

 

除了上面的所有方法 还有一种简单的方式是使用printf做进制转换,例:

a=`printf "%d"  0xef`

echo $a

>239



http://www.liyu8.com/article/91.htm

</article>

与[转帖]使用 Shell 运算进行进制转换 16进制转10进制相似的内容:

[转帖]使用 Shell 运算进行进制转换 16进制转10进制

使用 Shell 运算进行进制转换 工作时候常常遇到一些问题,拿到的数字是16进制的,但是运算的时候是10进制的,shell可以很方便的处理这类的进制转换问题,一种情况是使用 Shell 运算把一个数字从给定的进制转换位十进制。如果数字以运算展开式的形式提供,那么假定它带有十进制符号,除非 它前面带

[转帖]分享自己做的一个指定进程以及线程长时间cpu监控的工具

https://cdn.modb.pro/db/329601 前言: 前面给大家分享过一个工作中用到的编译拷贝脚本,其实工作中还有一些其他工具的使用,今天再来分享一个自己纯手工的CPU监控的脚本。大家可以结合上篇文章与本篇文章一起学习shell。 主要实现功能: 1.监控指定进程是否运行 2.读取该

[转帖]shell脚本变量详解(自定义变量、环境变量、变量赋值、变量运算、变量内容替换)

https://developer.aliyun.com/article/885658 简介: shell变量 shell变量是指用一个特定的字符串去表示不固定的内容 1.变量的类型 1.1自定义变量 一般情况下不怎么使用环境变量,如果需要在其他文件中引入某个文件的变量则在脚本最开始的位置使用sou

[转帖]Linux 平台使用shc 工具加密shell 脚本

2021-08-03 20:4510030原创Linux 本文链接:https://www.cndba.cn/dave/article/4642 1 shc 工具说明 shell 脚本是常用脚本,运维中经常使用,但有时候在shell 脚本中会包含一些敏感的信息,比如密码或者特殊的参数,此时我们就可以

[转帖]自动化运维:一键自动化脚本-shell

https://www.cnblogs.com/luoahong/articles/8456203.html shell函数 1、分别在服务器和客户端上创建www用户 1 2 useradd www id wwww 所有的web服务,都应该使用普通用户,所有的web服务都不应该监听80端口,除非负载

[转帖]你应该知道的Shell 脚本的经典十三问

https://blog.csdn.net/wangzhicheng987/article/details/131031344 1. 为何叫做shell? 我们知道计算机的运作不能离开硬件,但使用者却无法直接操作硬件,硬件的驱动只能通过一种称为操作系统(OS,Opertating System)的软

[转帖]使用 sed 处理文本文件

https://www.cnblogs.com/wx2020/p/16269905.html 前言 sed 是一款 GNU 流编辑器,可以按照指定的规则去处理文本文件或流,其强大的功能使用户在命令中快捷地修改文本文件成为可能。 它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输

[转帖] 使用socat反向Shell多台机器

https://www.cnblogs.com/codelogs/p/16012319.html 场景# 很多时候,我们需要批量操作多台机器,业界一般使用Ansible来实现,但使用Ansible来操作多台机器的前提是需要有ssh权限的,可悲的是,对于开发人员来说,一般是没有正式环境机器的ssh权限

[转帖]Shell编程之函数

目录 Shell函数使用Shell函数的优点 Shell 函数定义使用原则函数传参函数变量的作用范围 函数递归阶乘递归目录函数库 Shell函数 将命令序列按格式写在一起可方便重复使用命令序列Shell函数定义 调用函数的方法 使用Shell函数的优点 使用函数可以避免代码重复使用函数可以将大的工程

[转帖]linux 批量修改文件格式

将Windows上的shell脚本拷贝到Linux时,脚本的编码格式还是docs,需要改成unix才可执行,在文件不多的情况下可以直接手动更改,但是在脚本文件比较多的时候,手动改起来就太麻烦了,此时就可以使用shell命令批量来进行更改。 批量更改脚本如下: for i in `find . -ty