我需要使用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脚本编写的解决方案。
#!/bin/sh
x="0x23"
val=`python -c "print int('$x', 16)"`
echo $val