将十六进制数转换为十进制whith shell脚本

dev*_*per 3 shell sh

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

例如 :

convert()
{
    ...
    echo x=$decimal
}
Run Code Online (Sandbox Code Playgroud)

结果:

convert "0x148FA1"
x=1347489
Run Code Online (Sandbox Code Playgroud)

怎么做?

小智 9

您可以通过许多不同的方式进行转换,所有这些都在bash中,并且相对容易.

要将数字从十六进制转换为十进制:

$ echo $((0x15a))
346

$ printf '%d\n' 0x15a
346

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

$ echo 'ibase=16;obase=A;15A' | bc
346
Run Code Online (Sandbox Code Playgroud)


kum*_*ran 6

你可以查看这个链接.从根本上下面的代码将帮助您.

h2d(){
  echo "ibase=16; $@"|bc
}
d2h(){
  echo "obase=16; $@"|bc
}
Run Code Online (Sandbox Code Playgroud)

它是纯shell脚本解决方案.