Convert decimal to hexadecimal in UNIX shell script

后端 未结 11 787
孤城傲影
孤城傲影 2020-11-29 19:08

In a UNIX shell script, what can I use to convert decimal numbers into hexadecimal? I thought od would do the trick, but it\'s not realizing I\'m feeding it ASCII represent

相关标签:
11条回答
  • 2020-11-29 19:25

    Hexidecimal to decimal:

    $ echo $((0xfee10000))
    4276158464
    

    Decimal to hexadecimal:

    $ printf '%x\n' 26
    1a
    
    0 讨论(0)
  • 2020-11-29 19:25
    xd() {
        printf "hex> "
        while read i
        do
            printf "dec  $(( 0x${i} ))\n\nhex> "
        done
    }
    dx() {
        printf "dec> "
        while read i
        do
            printf 'hex  %x\n\ndec> ' $i
        done
    }
    
    0 讨论(0)
  • 2020-11-29 19:28
    # number conversion.
    
    while `test $ans='y'`
    do
        echo "Menu"
        echo "1.Decimal to Hexadecimal"
        echo "2.Decimal to Octal"
        echo "3.Hexadecimal to Binary"
        echo "4.Octal to Binary"
        echo "5.Hexadecimal to  Octal"
        echo "6.Octal to Hexadecimal"
        echo "7.Exit"
    
        read choice
        case $choice in
    
            1) echo "Enter the decimal no."
               read n
               hex=`echo "ibase=10;obase=16;$n"|bc`
               echo "The hexadecimal no. is $hex"
               ;;
    
            2) echo "Enter the decimal no."
               read n
               oct=`echo "ibase=10;obase=8;$n"|bc`
               echo "The octal no. is $oct"
               ;;
    
            3) echo "Enter the hexadecimal no."
               read n
               binary=`echo "ibase=16;obase=2;$n"|bc`
               echo "The binary no. is $binary"
               ;;
    
            4) echo "Enter the octal no."
               read n
               binary=`echo "ibase=8;obase=2;$n"|bc`
               echo "The binary no. is $binary"
               ;;
    
            5) echo "Enter the hexadecimal no."
               read n
               oct=`echo "ibase=16;obase=8;$n"|bc`
               echo "The octal no. is $oct"
               ;;
    
            6) echo "Enter the octal no."
               read n
               hex=`echo "ibase=8;obase=16;$n"|bc`
               echo "The hexadecimal no. is $hex"
               ;;
    
            7) exit 
            ;;
            *) echo "invalid no." 
            ;;
    
        esac
    done
    
    0 讨论(0)
  • 2020-11-29 19:33
    bash-4.2$ printf '%x\n' 4294967295
    ffffffff
    
    bash-4.2$ printf -v hex '%x' 4294967295
    bash-4.2$ echo $hex
    ffffffff
    
    0 讨论(0)
  • 2020-11-29 19:35

    In zsh you can do this sort of thing:

    % typeset -i 16 y
    % print $(( [#8] x = 32, y = 32 ))
    8#40
    % print $x $y
    8#40 16#20
    % setopt c_bases
    % print $y
    0x20
    

    Example taken from zsh docs page about Arithmetic Evaluation.

    I believe Bash has similar capabilities.

    0 讨论(0)
提交回复
热议问题