4

我需要使用 shell 脚本将数字从十六进制形式转换为十进制形式

例如 :

convert()
{
    ...
    echo x=$decimal
}

结果 :

convert "0x148FA1"
x=1347489

怎么做?

4

3 回答 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
于 2013-01-30T11:44:36.070 回答
6

你可以检查这个链接。从根本上说,以下代码将对您有所帮助。

h2d(){
  echo "ibase=16; $@"|bc
}
d2h(){
  echo "obase=16; $@"|bc
}

它是纯 shell 脚本解决方案。

于 2013-01-30T11:46:41.387 回答
1

如果您有可用的 python 解释器,您可以随时执行以下操作:

#!/bin/sh
x="0x23"
val=`python -c "print int('$x', 16)"`
echo $val
于 2013-01-30T11:45:29.780 回答