#!/bin/bash
2 # numbers.sh: 几种不同数制的数字表示法.
3
4 # 10进制: 默认情况
5 let "dec = 32"
6 echo "decimal number = $dec" # 32
7 # 这没什么特别的.
8
9
10 # 8进制: 以‘0‘(零)开头
11 let "oct = 032"
12 echo "octal number = $oct" # 26
13 # 表达式结果是用10进制表示的.
14 # ---------------------------
15
16 # 16进制: 以‘0x‘或者‘0X‘开头的数字
17 let "hex = 0x32"
18 echo "hexadecimal number = $hex" # 50
19 # 表达式结果是用10进制表示的.
20
21 # 其他进制: BASE#NUMBER
22 # BASE的范围在2到64之间.
23 # NUMBER的值必须使用BASE范围内的符号来表示, 具体看下边的示例.
24
25
26 let "bin = 2#111100111001101"
27 echo "binary number = $bin" # 31181
28
29 let "b32 = 32#77"
30 echo "base-32 number = $b32" # 231
31
32 let "b64 = 64#@_"
33 echo "base-64 number = $b64" # 4031
34 # 这个表示法只能工作于受限的ASCII字符范围(2 - 64).
35 # 10个数字 + 26个小写字母 + 26个大写字符 + @ + _
36
37
38 echo
39
40 echo $((36#zz)) $((2#10101010)) $((16#AF16)) $((53#1aA))
41 # 1295 170 44822 3375
42
43
44 # 重要的注意事项:
45 # ---------------
46 # 使用一个超出给定进制的数字的话,
47 #+ 将会引起一个错误.
48
49 let "bad_oct = 081"
50 # (部分的) 错误消息输出:
51 # bad_oct = 081: value too great for base (error token is "081")
52 # Octal numbers use only digits in the range 0 - 7.
shell的各种进制
时间: 2024-10-09 07:26:33
shell的各种进制的相关文章
linux shell下16进制 “\uxxxx” unicode to UTF-8中文
问题出现背景: 项目中有个通过ip获取归属地城市需求,我是直接通过新浪的ip归属查询接口来获取的.我使用的是shell脚本调用 RESULT=$(curl -s 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=119.137.53.145') 返回json格式的值: var remote_ip_info = {"ret":1,"start":-1,"end"
Shell中的进制转换
在Shell中默认表示数值为十进制,那么二进制.八进制和十六进制如何表示呢? 方法1:使用前缀. 0开头表示八进制,0x开头表示十六进制. 如下: #-----------------------------/chapter4/ex4-35.sh------------------ #! /bin/sh #十进制20 ((x=20)) echo "$x" #八进制20 ((x=020)) echo "$x" #十六进制20 ((x=0x20)) ec
SHELL中数值进制转换
八进制(020)→10 [[email protected] yemo]# echo $((num=020)) 16 [[email protected] yemo]# echo $((num=8#20)) 16 十六进制(0xff)→10 [[email protected] yemo]# echo $((num=0xff)) 255 [[email protected] yemo]# echo $((num=16#ff)) 255 [[email protected] yemo]# echo
shell进制转换
使用 Shell 运算进行进制转换 假定在您的脚本中有一些数字,您需要以另外的进制处理这些数字.使用 Shell 运算可以很容易地自动实现这类转换.一种情况是使用 Shell 运算把一个数字从给定的进制转换位十进制.如果数字以运算展开式的形式提供,那么假定它带有十进制符号,除非 它前面带有 0(这种情况假定是八进制)或 0x(这种情况假定是十六进制).键入以下内容以得到一些八进制和十六进制值的十进制输出: $ echo $((013)) $ echo $((0xA4)) 您还可以使用以下格式指定
shell命令行混合进制计算器
需要简单的计算的时候,不想用GUI的计算器,能在shell下直接计算就最好了 查了下,有个东西叫 bc, 具体的使用就不赘述了,可以运行bc,然后进去计算,也可以echo传递过去,大概是像这样 echo "1+2" | bc echo "ibase=16;1A+1" | bc 但用起来比较不爽,首先是要指定进制,这样整个表达式就都是这种进制的,比如说 echo "ibase=16;1A*10" | bc #计算的是 0x1A * 0x10 但我
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
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"
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. 使用方法: 其它进
shell 编程进制转换
shell脚本在处理数据的时候,默认是10进制,通过特殊的标记或者前缀可以转换为其他的进制. 以 0 开头就是 8 进制.以0x 开头就是16 进制数. 1. 使用 BASE#NUMBER 这种形式可以表示其它进制.BASE值的取值范围:2-64. 2. 赋值时候用(())符号.不能直接用=号了.=号没有值类型.默认将后面变成字符串了. 3. 可以通过定义符:let达到(()) 运算效果. 十进制转换为其他进制 ((表达式)),(())里面可以是任意数据表达式.如果前面加入:”$”可以读取计算结