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
}
分享到:
相关推荐
找到的一个不错的脚本,自己稍作修改,跟大家一起分享!
下面我们将详细介绍如何使用Linux Shell实现这两种IP地址形式的转换。 首先,我们要了解IP地址的十进制表示。一个IP地址由4个八位字节组成,每个字节的范围是0到255。例如,IP地址192.168.1.1可以转换为十进制整数...
### Linux命令之bc -- 浮点计算器、进制转换 #### 概述 在Linux环境中,用户经常需要处理各种计算任务。尽管Bash环境已经具备了处理整数运算的能力,但对于涉及浮点数的复杂计算,则显得力不从心。这时,`bc` 命令...
此外,Linux还提供了许多内置工具来进行十六进制转换,例如`od`(octal dump)命令可以用于将十进制数转换为十六进制字符串,`bc`计算器支持各种数值计算,包括十进制到十六进制的转换。这些工具在日常开发和调试中...
shell实现netmask掩码和cidr掩码位转换 Shell 实现 Netmask 掩码和 CIDR 掩码位转换是一种常用的网络协议 软件/插件,经常在写脚本时...* 《Unix/Linux Shell 编程》 * 《网络协议基础》 * 《Shell 脚本编程技术》
`hexdump`是Linux内建的一个命令行工具,它能够将文件内容转换成16进制格式显示。使用方法如下: ```bash hexdump -C filename ``` 这里`-C`选项表示以彩色格式输出,便于查看。它会显示每16个字节的数据以及对应...
在Unix/Linux环境中,为了增强脚本的安全性,有时我们需要将Shell脚本转换成C语言代码,然后编译成可执行程序。这个过程主要是利用一种工具,例如`shc`(Shell to C Compiler),它能够将Bash或其它Shell脚本转化为C...
自动化任务以shell为例,shell不能直接操作Excel文档,需要将Excel转换成文本然后在解析和分析,我使用GO语言开发编译成二进制命令,上传到服务器当命令使用。
可以使用一些工具(如shc - Shell Script Compiler)将脚本转换为编译过的二进制形式,使得原始代码难以理解。shc将Shell脚本转换为一个可执行的C程序,这个程序包含了加密后的脚本内容。 2. **使用加密容器**:...
bc 工具也可以进行进制转换。例如: no=100 echo obase=2;$no | bc obase 为目标进制,ibase 为原进制,默认情况下原进制为 10。 bc 工具还可以计算平方根和平方。例如: echo sqrt(100) | bc echo 10^10 | bc ...
本文还提供了两个示例脚本:二进制到十进制的转换和文件循环拷贝。 6. 脚本调试 Shell脚本的调试是非常重要的,可以使用echo语句来输出变量的值和命令的执行结果,从而帮助我们了解脚本的执行过程。 本文对Linux...
总之,Linux Shell和`awk`命令提供了一种高效的方式来处理二进制文件,包括读取特定字节、进行数学运算以及修改文件内容。对于大规模的二进制文件操作,这种自动化处理方式尤其重要,能够显著提高工作效率。在实际...
Shellex 警告:世界上最丑的代码C-shellcode 到十六进制转换器。 在 gdb、windbg、radare2、ollydbg、x64dbg、immunity debugger 和 010 编辑器中粘贴和执行 shellcode 的便捷工具。 您在将 C-shellcode 转换为 HEX ...
Linux系统管理中的Shell基础主要涉及对Shell这一概念的理解和运用。Shell是用户和操作系统之间交互的一种接口,它提供了一个命令行界面,允许用户输入命令并执行。Shell能够解释用户输入的命令,并调用相应的系统...
`umask`的计算方式是取反并加7,所以`002`取反加7得到`664`(二进制的`002`对应十进制的2,取反为`111`,加7即`111+010=111`,转换为八进制就是`664`)。 接下来,我们讨论`ln`命令,它用于创建链接。`ln source...
例如,可以设置小数精度(`scale=2`),进行进制转换,计算平方和平方根。 6. **stdin、stdout、stderr和tee**:在Linux中,0代表stdin,1代表stdout,2代表stderr。`tee`命令可以将数据同时输出到屏幕和文件,`-a`...
在Shell编程中,进制转换是常见的需求。例如,你可以使用内置的expr命令或awk工具来完成这些转换。在Shell脚本中,这些转换可以帮助你处理不同格式的数字信息,特别是在处理文件属性或进行系统配置时。 管道和循环...
### Linux Shell Sed 学习笔记:深入理解与实践 #### Sed 概览 Sed(Stream Editor)是一种功能强大的文本处理工具,适用于Unix/Linux环境下的流编辑操作。它能够读取输入流(如文件或标准输入),进行模式匹配、...
目录 • 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 脚本调试
- `echo $((2#101011))`:此处`#`用于二进制数制转换。 ##### 2. `;` 分隔符 - **用途**:用于在同一行中分隔多个命令。 - **示例**: - `echo "aa"; echo "bb"`:此行将执行两条命令。 - `if condition; then`...