linux shell 下各种进制数据转换。 |
您所在的位置:网站首页 › 11001011001转化为16进制 › linux shell 下各种进制数据转换。 |
**************************************** linux shell 下各种进制数据转换。 用echo 命令 **************************************** shell 内置各种进制表示方法非常简单。记得 base#number 即可。 base 为 2-64 赋值语句 let 或(()) 不能直接用=号,直接用等号是字符串照印。不是付给数值。 let i=16#ff let j=8#37 通俗记法: 0x 为16进制, 0开头问8进制 echo 命令以十进制显示数据。 ---------------------------------------- 1. 各种进制转换为十进制。 为变量赋值: ((var=base#number)) 显示变量: echo $var ---------------------------------------- 例: ((i=0xff10)); echo $i; ((i=32#qfg; echo $i; ---------------------------------------- 2. 十进制转换为其它进制。 利用bc 计算器。 bc命令格式转换为:echo "obase=进制;值" | bc ---------------------------------------- bc 是用来处理文件的。所以采用管道 例如: echo "obase=16;65536" | bc 10000 echo "obase=8;65536" | bc 200000 **************************************** 郑重推荐bc 计算器, 它支持交互模式, 可以使得转换根据简单,方便。 使用示例: bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. obase=16 设置16进制输出 ibase=10 设置10进制输入 65536 输入十进制 65536 10000 输出16进制 10000 obase 查看当前输出进制 16 ibase 查看当前输入进制 16 进制输入时 a-f 必需用大写, 小写会被视为变量,会报错。 要密切注意obase, ibase 及其含义, 还有一个变量scale, 浮点数精度。除法时会用到。 用printf 命令 hjj@hjj-Inspiron:~/$ printf "%d\n" 0x10 16 hjj@hjj-Inspiron:~/$ printf "%x\n" 100 64 linux 怎样查询一个字符的ascii码。 例如m的ascii是什么?反过来又怎样查? 答: ---------------------------------------- $ printf "%d\n" "'m'" 109 ---------------------------------------- $ printf "%c\n" 109 1 (错了) bash下 printf 到底怎样实现的,我没有看,但它功能确实不怎么样,不支持%c? 先扁他!! printf 命令代码后来我看了,%c, 109, 后面的109是按字符串对待的,只会打印第一个字符'1',这是解释的问题了. 用xxd 或 hexdump 可以显示ascii. 例如: $ echo abc |hexdump -C 00000000 61 62 63 0a |abc.| 用awk 下的printf 可以 ---------------------------------------- $ awk -v c=109 'BEGIN { printf "%c\n", c;}' m ---------------------------------------- 作为一个c++程序员,最后我还是选择了与c类似的awk 中的printf 来进行数制转换。 交互模式nodejs 也是一个很好的选择。 python 也类似有一个命令行交互式计算器。 这两个就不举例了,其中awk 是基础工具,默认都有安装的, 是一个优秀的文本处理工具。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |