View Raw SPL
/* convert integer to hex string */
int2hex(ival, nbytes)
{
        local hval, mask, fmt, hex_bitmode, is64;

        if (argc < 2)
        {
                if (argc < 1) error("int2hex - input scalar required");

                nbytes = -1;
        }

        /* 64-bit native integers? */
        is64 = (intmax() > 2^32);

        if (is64)
        {
                ival = castint(ival);
        }
        else
        {
                /* convert to integer scalar */
                ival = int(castreal(ival));
        }

        if (nbytes > 0)
        {
                mask = 2^(8 * nbytes) - 1;

                if (mask <= bitmax)
                {
                        ival &= mask;
                }

                fmt = sprintf("0x%%0%dllX", 2 * nbytes);
        }
        else
        {
                /* check configuration mode */
                hex_bitmode = castint(getconf("hex_bitmode"));

                if (is64 || (hex_bitmode & 0x02))
                {
                        /* 64 bit */
                        fmt = "0x%04llX";
                }
                else if (hex_bitmode & 0x01)
                {
                        /* check range */
                        fmt = (abs(ival) > 2^32) ? "0x%04llX" : "0x%04lX";
                }
                else
                {
                        /* 32 bit mode */
                        fmt = "0x%04lX";
                }
        }

        hval = sprintf(fmt, ival);
        
        return(hval);
}