Home AMX User Forum AMX Technical Discussion
Options

Hex conversion

HI, I need to convert a string of hex into decimal but I can't seem to figure it out. A string something like

$0,$36,$EE,$80

Needs to be seen as

$0036EE80

And that one hex value converted to decimal or even ASCII, something I can perform some math on and then display ultimately as decimal.

Any ideas much appreciated.

Answers

  • Options

    Something like this:

    DEFINE_VARIABLE
    
    VOLATILE CHAR cHexString[] = {$0,$36,$EE,$80}
    VOLATILE LONG lDecimal
    
    DEFINE_FUNCTION LONG fnHex(CHAR cHexData[]) 
    {
        STACK_VAR VOLATILE CHAR cResult[100]
        STACK_VAR VOLATILE INTEGER i
        FOR(i = 1 ;i<=LENGTH_ARRAY(cHexData); i++) 
        {
        cResult = "cResult,FORMAT('%02X',cHexData[i])"
        }
        SEND_STRING 0, cResult
        RETURN HEXTOI(cResult)
    }
    
    
    lDecimal = fnHex(cHexString)
    
  • Options
    PatGPatG Posts: 42

    Thanks I'll see if I can make that work. The thing is the hex string can change at any time so I have to allow for any possibility of 4 bytes.

  • Options

    @PatG said:
    Thanks I'll see if I can make that work. The thing is the hex string can change at any time so I have to allow for any possibility of 4 bytes.

    As long as the four bytes represent a valid number, it'l work. Good luck.

Sign In or Register to comment.