Linux/UNIX:将十六进制转换为十进制数
时间:2020-01-09 10:42:10 来源:igfitidea点击:
在UNIX/Linux操作系统下,如何使用Shell脚本将十六进制数转换为十进制数?
十六进制(hex)是一个基数为16的数字系统,它使用十六个不同的符号,大多数情况下使用符号09表示值0至9,以及A,B,C,D,E,F(或者a到f)表示十到十五的值。
bc任意精度计算器语言
无需编写shell脚本。
您可以在shell提示符下简单地使用以下语法将十六进制转换为十进制数字,反之亦然。
bc:十六进制或者二进制转换
要转换为十进制,请将ibase设置为16,执行:
echo "ibase=16; hex-number"|bc echo "ibase=16; FFF"|bc
输出示例:
4095
要转换为十六进制,请将obase设置为16,执行:
echo "obase=16; decimal-number"|bc echo "obase=16; 10"|bc
输出示例:
A
ibase和obase定义了bc下输入和输出数字的转换基础。
输入和输出的默认值为10。
将以下函数添加到~/.bashrc中:
h2d(){ echo "ibase=16; $@"|bc } d2h(){ echo "obase=16; $@"|bc }
可以在命令行中按以下方式使用以上两个功能:
$ h2d 100 $ d2h AC
使用内置的printf shell进行基本转换
您还可以使用内置的shell和/usr/bin/printf使用printf。
要将十进制转换为十六进制,请执行:
printf "%x\n" 4095
输出示例:
fff
要将十六进制转换为十进制,请执行:
printf "%d\n" 0xfff
输出示例:
4095
您可以将结果保存到shell变量中,并使用printf或者echo命令将其打印出来:
output=$(printf "%d\n" 0xfff) echo "${output}" printf "%d\n" $output