4

シェルスクリプトを使用して、数値を16進形式から10進形式に変換する必要があります

例えば ​​:

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

結果 :

convert "0x148FA1"
x=1347489

どうやってするの?

4

3 に答える 3

12

さまざまな方法で変換できますが、すべてbash内で、比較的簡単です。

数値を16進数から10進数に変換するには:

$ 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
}

これは、純粋なシェルスクリプトソリューションです。

于 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 に答える