bashshellhexdecimal

Hexadecimal To Decimal in Shell Script


Can someone help me to convert a hexadecimal number to decimal number in a shell script?

E.g., I want to convert the hexadecimal number bfca3000 to decimal using a shell script. I basically want the difference of two hexadecimal numbers.

My code is:

var3=`echo "ibase=16; $var1" | bc`
var4=`echo "ibase=16; $var2" | bc`
var5=$(($var4-$var3))               # [Line 48]

When executing, I get this error:

Line 48: -: syntax error: operand expected (error token is "-")

Solution

  • To convert from hex to decimal, there are many ways to do it in the shell or with an external program.

    With :

    $ echo $((16#FF))
    255
    

    with :

    $ echo "ibase=16; FF" | bc
    255
    

    with :

    $ perl -le 'print hex("FF");'
    255
    

    with :

    $ printf "%d\n" 0xFF
    255
    

    with :

    $ python -c 'print(int("FF", 16))'
    255
    

    with :

    $ ruby -e 'p "FF".to_i(16)'
    255
    

    with :

    $ node -e "console.log(parseInt('FF', 16))"
    255
    

    with :

    $ rhino -e "print(parseInt('FF', 16))"
    255
    

    with :

    $ groovy -e 'println Integer.parseInt("FF",16)'
    255