使用Shell脚本将十六进制数转换为十进制数

4
我需要使用Shell脚本将一个十六进制数转换为十进制数。
例如:
convert()
{
    ...
    echo x=$decimal
}

结果:

convert "0x148FA1"
x=1347489

如何做到这一点?
3个回答

12

你可以用多种不同的方式在bash中进行转换,而且相对容易。

要将一个十六进制数转换为十进制:

$ echo $((0x15a))
346

$ printf '%d\n' 0x15a
346

$ perl -e 'printf ("%d\n", 0x15a)'
346

$ echo 'ibase=16;obase=A;15A' | bc
346

6
您可以查看这个链接。基本上以下代码会有所帮助。
h2d(){
  echo "ibase=16; $@"|bc
}
d2h(){
  echo "obase=16; $@"|bc
}

这是一个纯shell脚本编写的解决方案。


一种优雅的解决方案,不依赖于bash。谢谢! - eksortso

1
如果您有可用的Python解释器,您总可以执行以下操作:
#!/bin/sh
x="0x23"
val=`python -c "print int('$x', 16)"`
echo $val

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接