我需要使用 shell 脚本将数字从十六进制形式转换为十进制形式
例如 :
convert()
{
...
echo x=$decimal
}
结果 :
convert "0x148FA1"
x=1347489
怎么做?
您可以通过多种不同的方式进行转换,都在 bash 中,而且相对容易。
要将数字从十六进制转换为十进制:
$ echo $((0x15a))
346
$ printf '%d\n' 0x15a
346
$ perl -e 'printf ("%d\n", 0x15a)'
346
$ echo 'ibase=16;obase=A;15A' | bc
346
你可以检查这个链接。从根本上说,以下代码将对您有所帮助。
h2d(){
echo "ibase=16; $@"|bc
}
d2h(){
echo "obase=16; $@"|bc
}
它是纯 shell 脚本解决方案。
如果您有可用的 python 解释器,您可以随时执行以下操作:
#!/bin/sh
x="0x23"
val=`python -c "print int('$x', 16)"`
echo $val